Effective Python筆記

第一章:用Pythonic方式來思考

第2條 PEP8

《Python Enhancement Proposal #8》8號Python增強提案。

空白:①4個空格代表tab ②每行<=79字符 ③分行後加4個空格 ④類中方法空1行,方法和類空2行

命名:①函數、變量、屬性用小寫字母和下劃線組成 ②受保護用單下劃線,私有用雙下劃線 ③類與異常用駝峯 ④模塊級別常量用全大寫 ⑤類中實例方法首個參數是self,表示改對象;類方法的首個參數是cls,表示該類。

表達式和語句:①not不要放在表達式前面 ② 採用if not list 判斷列表是否爲空③import放開頭且使用絕對路勁引用(但可以form . import models)④import順序按照標準庫、第三方模塊庫、自用模塊導入,每部分按字母順序排列。

第3條:瞭解bytes、str、unicode區別

isinstance(obj, class)判斷class類型是否是obj的(父)類

str.encode(‘utf-8’)轉變爲bytes類型 bytes.decode(‘utf-8’)轉變爲str類型

在讀寫文件中,默認是’utf-8’,如果使用二進制必須加上‘b’

python3 bytes是8位值的序列,str是包含Unicode字符序列。

python2 str是8位值的序列,unicode是包含Unicode字符序列。若str只包含7位ASCII,可以使用相關操作同時使用。

第4條:用輔助函數來取代複雜的表達式

repr(obj),將obj對象轉換成字符串類型

or左邊表達式爲真則用左邊的,否則用右邊的 a = False or ‘1’ # a=1

if/else表達式 a = x if x>y else y

第5條:瞭解切割序列的辦法

assert 表達式, 當表達式等於False時,拋出AssertionError

start或end索引越界也不會出問題

第6條:在單次切片操作內,不要同時指定start、end和stride

同時指定start、end和stride會導致代碼難以閱讀,stride儘量使用正值。

可考慮使用itertools模塊中的islice。(第46條:使用內置算法與數據結構:)

第二章:函數

第三章:類與繼承

第四章:元類及屬性

第五章:併發及並行

第六章:內置模塊

第46條:使用內置算法與數據結構

第46條:使用內置算法與數據結構

第七章:協作開發

第八章:部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章