前段時間和你們一塊兒分享了一篇關於學習方法內容《大牛與搬運工的差距——學習方法的力量》。咱們將學習過程分紅八步,並借鑑了敏捷開發的迭代思想,以達到自我迭代學習的效果。行勝於言,理論結合實踐纔是王道,因此本文我將基於前面的學習方法,分享我是如何學習python的。html
爲何學習python?
「Life is short, you need Python!」 ——Bruce Eckelpython
python是一種被普遍使用的高級編程語言,其代碼語法簡潔、可讀性強,而且具備豐富和強大的庫。python簡單易學,應用普遍,web開發、爬蟲、運維、人工智能……能夠說無所不能。python去年還被列入了全國計算機等級考試科目,也逐步成爲小白踏上編程之路的入門語言了。web
「人生苦短,我用python!」用python幹什麼?這個因人而異,我的而言,我學習python主要用於兩個方向:爬蟲和運維,工做上能夠幫助咱們複雜工做簡單化,重複工做自動化,以及之後的人工工做智能化。編程
本文和你們探討的是學習python的方法,接下來咱們就立刻開啓python的學習之旅。網絡
1.確立目標
我對python的定位,其實就是一個提高工做效率的工具,我學習python的目的簡單明確,總的來講就兩個:運維
1.學習python語言,並能用它來爬取數據作數據分析;
2.使用python製做一些腳本工具,以幫助並提高工做效率。
2.拆分任務
咱們經過逆向分解,將目標拆分紅具體的可執行任務。這個過程其實就是將目標細分整理成具體的小目標或問題,而後將其關聯到一個個可執行的任務,目的是完成目標或解決問題。curl
完成個人兩個目標,須要具體學習哪些知識,完成哪些事項呢?第一個目標須要學習python的基本語法,像數據類型、邏輯結構、列表、元組、字典、引用等基礎知識,以及爬蟲相關的requests、urllib、pycurl、tornado等模塊。第二個目標則須要根據平時工做的實際需求,進一步藉助python語言及相應模塊來製做腳本工具,以提高工做效率。編程語言
梳理以後,目標就會被分解成一個個須要完成的具體任務。這裏我藉助「然之協同」裏的任務管理工具,將須要作的任務都羅列出來,方便後面執行跟蹤。tornado
3.蒐集知識資源
學習過程當中必然少不了各類學習資料,在蒐集知識資源時主要側重三方面:書籍、官方文檔和網絡技術文章。工具
我學習的是python 3.x版本,首先找的就是python的官方文檔,內容既權威又全面。(英語確實是道坎。)其次書籍買的是《Python基礎教程(第2版)》、《Python網絡數據採集》,同時網上也下載了基本PDF電子書。除此以外,還在CSDN、掘金、博客園等IT技術門戶裏查閱一些python相關的「乾貨」。
對於知識資源的蒐集,仍是要提醒你們注意一點,切勿作「收藏控」。不少朋友對於書籍、各類教程、網絡文章等資源,購買了下載了收藏了,而後,就沒有而後了,最終真的淪落爲「收藏品」。而咱們真正要作的是要把知識「收藏」並沉澱到咱們腦子裏。
4.分配自身資源
其實就是時間管理。咱們時間、精力等各方面資源有限,全部的知識不可能平均分配有限資源。對於咱們蒐集的知識資源,要分清主次,而後使用不一樣的時間管理策略進行學習。
前面梳理了一些須要執行的學習任務,並整理了大量的學習資源,這一步要作的就是將這些任務、資源結合自身的實際狀況,合理規劃分配時間精力。每一個人的狀況不一樣,因此這一步因人而異,這裏我仍是藉助「然之協同」的待辦工具,作一個具體可執行性的學習計劃。
5.勤學
學習效率與效果取決於執行力。以前文章介紹過學習過程當中的一些方法論,這裏我簡要地介紹一下學習python時的大致過程。
a.快速泛讀
若是你有必定語言基礎,好比我以前學過C、PHP語言,再學起python來上手就相對快一些。基本的語法知識能夠先快速過一遍,像python的模塊庫、對象等知識能夠先了解基本的應用流程,具體的細節問題在後面的使用操做時在深刻研究。
b.深刻解讀
由淺入深地沉澱每一個知識點。python的語法與其餘語言仍是有區別的,好比列表、字典、循環結構等,並且python2和python3在語法上也有些變更。雖然我直接學習的python3,但python2的一些不一樣之處仍是要了解的,畢竟不少python資源模塊在2上已經很成熟了。
c.問題攻讀
對於學習過程當中遇到的問題,先查閱資料或谷歌來解決。好比python2和3的區別,做爲爬取模塊的requests、urllib、pycurl、tornado的區別等等。若是有難以解決的問題,能夠先記下,或許後面會柳暗花明或找他人幫助。
這一步學習的正確姿式是在實踐操做中發掘問題,而後帶着問題找答案。
6.創建知識體系
不要覺得這一步無關緊要,創建知識體系有助於幫咱們理清各個概念和知識點之間的關聯,逐漸造成系統的知識體系。基於前面的大量泛讀和深刻解讀,咱們能夠逐步構建出一個知識體系。這裏我藉助xmind腦圖工具,整理了一下python的知識體系。
7.好問
基於前面問題攻讀後還有未解決的問題,就要求教他人獲取幫助了。提問也是一門藝術,這還是一個學習交流的過程,而不是讓別人去解決本來你該解決的問題。
向別人提問求助時,要講問題的前因後果講清楚,如怎麼引發的,本身嘗試作了哪些操做等等。這些年在衆多技術交流社羣和平臺,見過不少奇葩的提問方式,這裏列幾個,與你們共勉。
a.直拋結果型
直接甩出一張截圖或錯誤提醒,並附上一句:怎麼解決?怎麼破?跪求科普……
b.不懂就問型
不動腦,不動手,碰到問題就問。這種選手即使幫他解決了問題,他也學不到東西。
c.懶人型
與前者相似,但更滑稽好笑,看到這種問題我我的向來直接無視。好比「這個問題是這樣操做麼?」,「我這樣整對不對?」,「是點這裏麼?」……
8.分享複述
其實即使不提「費曼技巧」,咱們不少人在學習時都會用到分享複述這個方法。不管是演講、錄視頻、仍是像我此刻這樣寫文章,其實都是在向他人闡述本身對知識的理解和觀點,而後你們會給本身一些反饋,好比你的錯誤、問題,接着本身再回歸到知識裏完善不缺「漏洞」,如此迭代學習。
實戰演練
我以前整理的另外兩篇python實例:
《[實戰演練]python3使用requests模塊爬取頁面內容》
《Python3分析sitemap.xml抓取導出全站連接》
小結
我將本身學習python的過程分爲八步:
1.確立目標:沒有目標的學習是不會有結果和效果的。
2.拆分任務:將目標分解成具體可執行的學習任務。
3.蒐集知識資源:查閱官方文檔、購買書籍、蒐集網絡乾貨文章。
4.分配自身資源:合理分配時間精力,制定學習計劃。
5.勤學:強大的執行力是學習的根本保障。
6.創建知識體系:將學習的知識在腦海裏創建系統模型。
7.好問:避免孤立學習,但好問也要會問。
8.分享複述:檢驗學習成果,提升學習效果的最好方法。
做者:GavinHsueh,專一項目管理、辦公自動化、網站建設等web應用開發領域。