學 Python 3,還得看官方文件
掐指一算,python2 還有十個月的時間官方就不再維護了,從去年的下半年開始,我就一直在學python3,說說簡單的一些感受,以及推薦一些學習資料。
雖然自認為是一個python程式設計師,但工作中python用的不多,甚至沒有進行過python web 開發,平時偶爾用python寫一些指令碼,水平算中等偏下。
那麼既然對python不是特別瞭解,且同時python3改變很大,為什麼不考慮去學一門新的語言呢?比如說 go 語言,一方面不想輕易放棄,況且python的態勢也非常好;另外python是非常現代化的程式語言,熟練了解它的特性,相信再去學其他語言就會事半功倍,所以我的目標就是精通python。
如果你從來沒有學過python,那麼恭喜,完全可以跳過python2,直接學習python3;當然對於python2的程式設計師來說,也大可不必懊惱,掌握好python2,對於python3中演變會有更深刻的理解。
現在面臨的問題就是如何學習python3,學習資料從哪兒找呢?python書籍多如牛毛,但完全基於python3的並不多,如果你完全不想涉及python2,或者怕誤導你,那麼選擇學習資料非常重要。
從去年下半年開始,我首先學習的資料就是官方的《Tutorial 教程》,由於有一定的基礎,同時它是入門資料,所以讀起來還算輕鬆,能夠大體的瞭解python基礎框架和語法。雖然是 Tutorial 教程,但用語還是非常精準的,不會產生歧義,所以如果你象瞭解python3或有一定的程式設計基礎,所以推薦一讀。
當然官方《Tutorial 教程》沒有涉及太多的高階知識,比如裝飾器等概念,如果想進一步進階,推薦《Python3 Tutorial》,這是一個python3教程,地址是 https://www.python-course.eu/python3_course.php,最大的優點就是沒有廢話,不會涉及太多的基礎知識,適合有一定編碼能力的python程式設計師使用,很多python核心的概念都講到了,實用性非常好,講解的也很通俗。看完後,我對於迭代器、閉包、生成器、裝飾器、類等概念有了進一步的瞭解,當然光看是沒有用的,比如生成器實際的應用場景是什麼?這個可能要通過閱讀優秀程式碼才能深刻掌握。
我在學習python的時候,看過《python核心程式設計(第二版)》,這本書非常老,這次又拿出來複習來一遍,主要看了第一部分(第二部分高階主題沒看),而且是對照著英文版一起看,客觀的說,翻譯的不錯,當然關於python2的部分(尤其完全廢棄的部分,比如python2編碼),選擇跳過。如果你也有這本書,那麼我建議讀一讀。
瞭解Python基礎語法和核心概念後,後面就是程式設計了,在編碼過程中,使用最多的就是官方的《Library Reference》,目前我只是看了很少一部分,如果熟練掌握,後面遇到問題的時候就用不著 google 了,如果覺得 《Library Reference》 說的有點繁瑣和不通俗,可以參考 《PyMOTW-3》,地址是 https://pymotw.com/3,裡面有很多的例子,可以借鑑使用。
對於Python包開發來說,使用第三方模組非常常見,如何尋找、下載、安裝、使用包是非常關鍵的能力,由於python歷史久遠,包安裝相對混亂,比如你知道 pip 和 esay_install 的區別嗎?知道 whell 和 dist 的概念嗎?所以這一塊是我重點想學習的。
去年基於 python2 也溫習了下包安裝、分發的概念,寫了兩篇文章,分別是《手把手教你釋出一個Python包》 和《在Python中安裝包的三種方法》 ,但不得不說,python3 對於包安裝和分發有了很大的改動,廢棄了很多老的工具,如果你想系統學習,必須讀一遍《Python Packaging Authority》這個第三方的文件,地址是 https://www.pypa.io/en/latest/future,這也是我下一階段的學習重點,Python官方也有對應的教程,比如《Installing Python Modules》和《Distributing Python Modules》,但寫的不是很詳細,只是淺嘗輒止,但對於整體理解包安裝、分發還是非常有幫助的,後面我也想簡單的寫一篇文章,從python3的角度全域性把握包的概念。
推薦大家關注我的公眾號(ID:yudadanwx,虞大膽的嘰嘰喳喳)和我的書《深入淺出HTTPS:從原理到實戰》