第一章:用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條:使用內置算法與數據結構:)