學習Python的三種境界,你現在是在什麼境界?
前言
王國維在《人間詞話》中將讀書分為了三種境界:“古今之成大事業、大學問者,必經過三種之境界:‘昨夜西風凋碧樹,獨上高樓,望盡天涯路’。此第一境也。‘衣帶漸寬終不悔,為伊消得人憔悴。’此第二境也。‘眾裡尋他千百度,驀然回首,那人卻在燈火闌珊處’。此第三境也。我從入門Python到現在也沒有多少時間,所以寫如此大的一個題目必定會引發各種批判,當然我沒有想造一個大新聞,只是想根據自己的學習歷程做一個簡單的總結,同時將這三個階段對應的一些好的書籍簡單介紹介紹。
正文
Python的用途十分廣泛,不同的程式設計師將其用於不用的領域,不同的程式設計師將自己的程式碼打包成庫,供其他程式設計師使用,從而少造輪子,各種庫的使用,加之Python本身的靈活性、易讀性,易寫性,使用的人越來越多,tiobe統計程式語言的使用率如下:Python在一年之間使用排行榜中上升了3名,而且各大公司在招聘員工的時候如果能掌握Python,肯定是一個加分項,因為Python在文字處理,小程式的寫作方面具有太強的優勢,前段時間一個朋友讓幫忙改下他們公司logo的顏色,第一個想到的就是用Python,女票讓我幫她預處理大資料,第一個想到的仍然是Python等等,當然並沒有說其他語言不好,也不是為了討論哪種語言更好,只是Python確實是一門會讓人幸福的語言,下面粗淺的說說我對Python學習過程中的境界劃分以及推薦書籍。
第一個階段:初級,掌握Python的語法和一些常用庫的使用
這裡首先推薦廖雪鋒在網上的書籍,這是Python2.7版本的,這本書適合於重頭開始一直讀完,作為一個開發人員,除了基本的語法,這本書裡面提到了一些其他的常用的庫,看了廖老師寫的很多東西,感覺他的思路,以及寫部落格寫書的高度,概括性,原理性都十分好,這本書讀完之後,相信就可以動手寫很多東西了,可以盡情的玩轉Python直譯器了。
另外還有一本書《Python參考手冊》,這本書也十分的有用,關於Python的方方面面基本都囊括在內,可以作為一本Python字典來查詢使用方法,十分好用。
掌握一門語言最好的方法就是用它,所以我覺得邊學語法邊刷Leetcode是掌握Python最快的方式之一。
很多隻需要將Python作為指令碼或者就是寫一些小程式處理處理文字的話,到這一個階段就足夠了,這個階段已經可以幫我們完成很多很多的事情了。但是如果是一個專業學習Python的,恐怕還需要努力的升級:首先,國內的大多數人都是學習了其他語言(C,C++,Java等)之後來學習Python的,所以Python和這些語言的不同,也就是pythonic的東西需要一些時間去學習瞭解和掌握;另外,對於自己領域的領域的庫構架的掌握也需要很長的時間去掌握;最後,如果想獨立完成一個Python的專案,專案的佈局,釋出,開源等都是需要考慮的問題。
第二個階段:中級,掌握自己特定領域的庫,掌握pythonic寫法,非常熟悉Python的特性
推薦的第一本書是《編寫高質量程式碼--改善python程式的91個建議》,這本書大概的提了下Python工程的檔案佈局,更多的總結了如何寫出pythonic的程式碼,另外,也介紹了一些常用的庫。
要想深入的瞭解Python,有的時候看看Python的原始碼也是很重要的,自己通過讀懂原始碼,來徹底的瞭解Python的核心機制,這裡推薦《Python原始碼剖析——深度探索動態語言核心技術》,這本書並沒有看完,只是在需要深入瞭解Python某個功能或者資料結構的時候看看相關章節,也覺得受益匪淺。
自己領域的書籍和資料也肯定很多,比如web開發的構架都有很多,只有瞭解熟悉了所有構架,在選擇的時候才能衡量利弊,然後深入掌握某些構架。
這個階段過後,可以寫出pythonic程式碼,可以通過PEP8的檢查,可以為開源社群做貢獻了,可以將一個Python檔案寫的十分好,但是如果要用Python開發一個大型專案,還是有很多東西需要掌握的,比如專案的文件,專案的釋出,下載,專案效能和案例等等。
第三個階段:高階,從整個工程專案著眼,考慮document,distribution,效能優化等。
目前只看了一本書《the hacker guide to python》,看的是英文版的,這本書對專案的佈局,文件,效能,釋出等做了很多詳細的介紹,我覺得寫的還是很不錯,只不過本人還需要再讀幾遍。
對於大多數人來說,很難有機會從頭開始一個有意義的大型工程專案,所以自己可以用Python實現一些簡單的功能,簡單的專案,這個靈感可以去知乎或者quora搜尋,很多前輩都分享了自己的經驗。
從大局入手,規劃好專案的佈局,設定好相應的文件說明,提供工程下載安裝的方法,帶幾個demo,每個類,每個函式,每行程式碼都反覆推敲,寫出pythonic的程式,相信這時候Python於我們便是信手拈來了!
總結
本文只是我認為的學習Python的三種境界,以我粗淺之眼光,肯定有太多太多的不足,而且自己也就是一個介於初級和高階Python程式設計師的水平,寫這個文章,也算是給自己設立的一個目標吧。
Python學習交流群:548377875