第一章:Pythonic 思維
知道你所用的 Python 版本
遵循 PEP8 風格指南
搞清楚 bytes、str 與 unicode 之間的差異
撰寫輔助函式而非複雜的運算式
知道如何切割序列
避免在單一切片中使用 start、end 與 stride
使用串列概括式而非 map 或 filter
在串列概括式中不要使用超過兩個運算式
考慮使用產生器運算式取代大型概括式
優先選用 enumerate 而非 range
使用 zip 來平行處理迭代器
避免在 for 或 while 迴圈之後使用 else 區塊
善用 try/except/else/finally 中的每個區塊
第二章:函式
優先選用例外而非回傳 None
知道 Closures 如何與變數範疇互動
考慮使用產生器而非回傳串列
迭代引數時要做好防備
以可變的位置引數來減少視覺雜訊
以關鍵字引數提供選擇性的行為
使用 None 與 Docstrings 來指定動態的預設引數
強制使用僅限關鍵字引數來讓程式碼更清楚易懂
第三章:類別與繼承
優先選用輔助類別而非使用字典或元組來管理紀錄
接受函式作為簡單的介面,而非使用類別
使用 @classmethod 多型機制來建構泛用物件
使用 super 來初始化父類別
多重繼承只用於 Mix-in 工具類別
優先選用公開屬性而非私有屬性
繼承 collections.abc 以建立自訂的容器型別
第四章:元類別與屬性
使用普通的屬性而非 Get 或 Set 方法
考慮使用 @property 而非重構屬性
使用描述器來建立可重用的 @property 方法
使用 __getattr__、__getattribute__ 與 __setattr__ 來建立惰性屬性
以元類別來驗證子類別
以 Metaclasses 註冊類別的存在
以 Metaclasses 來注釋類別屬性
第五章:共時與平行處理
使用 subprocess 來管理子行程
執行緒用於阻斷式的 I/O,避免用於平行處理
使用 Lock 來避免執行緒中的資料靜態
使用 Queue 來協調執行緒之間的工作
考慮使用 Coroutines 來共時執行許多函式
考慮使用 concurrent.futures 來達成真正的平行處理
第六章:內建模組
以 functools.wraps 定義函式裝飾器
考慮使用 contextlib 與 with 述句來建立可重用的 try/finally 行為
用 copyreg 來使 pickle 更可靠
本地時鐘使用 datetime 而非 time
使用內建的演算法與資料結構
精確度很重要時就使用 decimal
知道去哪找社群建置的模組
第七章:協作
為每個函式、類別與模組撰寫 Docstrings
使用套件來組織模組並提供穩定的 API
定義一個根例外來隔離呼叫者與 API
知道如何打破循環依存性
使用虛擬環境來建立孤立且可重現的依存性
第八章:推出產品
考慮使用以模組為範疇的程式碼來設置部署環境
使用 repr 字串作為除錯輸出
所有的東西都使用 unittest 來測試
考慮使用 pdb 來進行互動式的除錯
最佳化之前先進行效能評測
使用 tracemalloc 來了解記憶體用量或是否有洩漏