基礎語法都知道,代碼也基本能讀懂,可是動手能力差,寫代碼沒有任何頭緒,開源項目中的代碼稍微複雜就難以理解,這是不少初學者面臨的困惑。國內 Python 教程參差不齊,大多數僅停留在基礎語法層面,這致使不少初學者甚至一些富有經驗的開發者寫出來的代碼帶有濃重的「口音」(從其它語言轉移過來的編程思惟),好比:python
a = 1
b = 2
# 交換兩個變量
tmp = a
a = b
b = tmp複製代碼
這代碼雖然能正確執行,但在 Python 中這是很不專業的寫法,真正的 Pythonic 寫法是:程序員
a = 1
b = 2
a, b = b, a複製代碼
又好比遍歷帶索引下標的集合對象時,非Python程序員首先想到的寫法多是先定義一個索引下標變量 : 編程
colors = ['red', 'green', 'blue', 'yellow']
index = 0
for x in colors:
print(index, colors[index])
index += 1複製代碼
若是你是一個有經驗的Python程序員,那麼你必定會想到 enumerate
函數能實現這樣的功能。數據結構
colors = ['red', 'green', 'blue', 'yellow']
for index, color in enumerate(colors):
print(index, color)複製代碼
諸如此類優雅的寫法,還有不少高級特性,裝飾器、生成器、迭代器、描述符等概念摻雜在一塊兒讓人望而生畏。棘手的字符編碼問題,字節字符串與 Unicode 字符串在 Python2 中互相轉換能把人逼瘋。函數做爲第一類對象在實際應用中有着舉足輕重的做用,理解函數,也就是理解閉包、裝飾器、做用域、命名空間、內省等概念,幾乎無人問津的 Python 垃圾回收機制、以及協程併發等與性能相關的主題,你可能這輩子都用不着的元類(若是你要着手寫一個框架,那麼你不可避免地須要去理解元類的概念以及應用。)面向對象的精髓,如何高效地使用Python數據結構,閉包
以上知識點都是通往 Python 高手之路所必須掌握的。併發
然而,彷佛曆來沒有一本書可以全面的從這些方面講解,值得可賀的是,兩年前一本叫作《Fluent Python》的書填補了 Python 社區沒有像樣的關於實戰技巧、進階提升書籍的空白。這本書通過兩年時間的驗證,口碑毋庸置疑,國內各類技術社區對此書都有不錯的評論,英文版我有幸拜讀過,它給個人工做提供很多幫助,是一本進階程序員不可多得的好書。框架
一個利好消息,《Fluent Python》今年正式由圖靈教育引進,中譯本《流暢的Python》目前已經順利出版。函數
贈書活動由圖靈教育贊助,首先感謝圖靈的支持,一共有5本書。活動的規則很簡單,在公衆號 "Python之禪"的 初級Python程序員如何進階? 這篇文章下面留言就有機會得到此書。截止時間是5月21日24點性能
公衆號:Python之禪 (id:VTtalk),分享 Python 等技術乾貨編碼