前段時間和大家一起分享了一篇關於學習方法內容《大牛與搬運工的差距——學習方法的力量》。我們將學習過程分成八步,並借鑑了敏捷開發的迭代思想,以達到自我迭代學習的效果。行勝於言,理論結合實踐才是王道,所以本文我將基於前面的學習方法,分享我是如何學習python的。
為什麼學習python?
“Life is short, you need Python!” ——Bruce Eckel
python是一種被廣泛使用的高階程式語言,其程式碼語法簡潔、可讀性強,並且具有豐富和強大的庫。python簡單易學,應用廣泛,web開發、爬蟲、運維、人工智慧……可以說無所不能。python去年還被列入了全國計算機等級考試科目,也逐步成為小白踏上程式設計之路的入門語言了。
“人生苦短,我用python!”用python幹什麼?這個因人而異,個人而言,我學習python主要用於兩個方向:爬蟲和運維,工作上可以幫助我們複雜工作簡單化,重複工作自動化,以及以後的人工工作智慧化。
本文和大家探討的是學習python的方法,接下來我們就馬上開啟python的學習之旅。
1.確立目標
我對python的定位,其實就是一個提升工作效率的工具,我學習python的目的簡單明確,總的來說就兩個:
1.學習python語言,並能用它來爬取資料做資料分析;
2.使用python製作一些指令碼工具,以幫助並提升工作效率。
2.拆分任務
我們通過逆向分解,將目標拆分成具體的可執行任務。這個過程其實就是將目標細分整理成具體的小目標或問題,然後將其關聯到一個個可執行的任務,目的是完成目標或解決問題。
完成我的兩個目標,需要具體學習哪些知識,完成哪些事項呢?第一個目標需要學習python的基本語法,像資料型別、邏輯結構、列表、元組、字典、引用等基礎知識,以及爬蟲相關的requests、urllib、pycurl、tornado等模組。第二個目標則需要根據平時工作的實際需求,進一步藉助python語言及相應模組來製作指令碼工具,以提升工作效率。
梳理之後,目標就會被分解成一個個需要完成的具體任務。這裡我藉助“然之協同”裡的任務管理工具,將需要做的任務都羅列出來,方便後面執行跟蹤。
拆分任務
3.蒐集知識資源
學習過程中必然少不了各種學習資料,在蒐集知識資源時主要側重三方面:書籍、官方文件和網路技術文章。
我學習的是python 3.x版本,首先找的就是python的官方文件,內容既權威又全面。(英語確實是道坎。)其次書籍買的是《Python基礎教程(第2版)》、《Python網路資料採集》,同時網上也下載了基本PDF電子書。除此之外,還在CSDN、掘金、部落格園等IT技術門戶裡查閱一些python相關的“乾貨”。
對於知識資源的蒐集,還是要提醒大家注意一點,切勿做“收藏控”。很多朋友對於書籍、各種教程、網路文章等資源,購買了下載了收藏了,然後,就沒有然後了,最終真的淪落為“收藏品”。而我們真正要做的是要把知識“收藏”並沉澱到我們腦子裡。
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,QQ/微信:753391279,專注專案管理、辦公自動化、網站建設等web應用開發領域。
更多技術文章、互動交流,歡迎關注公眾號: