空白
python中的空白(whitespace)會影響代碼含義。程序員在使用空白的時候需要注意,因爲會影響到代碼的清晰程度。
- 使用space(空格)來表示縮進,而不要用tab(製表符)。
- 和語法相關的每一層縮進都用4個空格來表示。
- 每行的字符數不應超過79
- 對於佔據多行的長表達式來說,除了首行之外的其餘各行都應該在通常的縮進級別之上再加4個空格。
- 文件中的函數與類之間應該用兩個空行隔開。
- 在同一個類中,各方法之間應該用一個空行隔開。
- 在使用下標來獲取列表元素、調用函數或給關鍵字參數賦值的時候,不要再兩旁添加空格。
- 爲變量賦值的時候,賦值符號的左側和右側應該各自協商一個空格,而且只寫一個就好。
命名
PEP8提倡採用不同的命名風格來編寫python代碼的各個部分,以便在閱讀代碼時可以根據這些名稱看出它們在python語言中的角色。
- 函數、變量及屬性應該用小寫字母來拼寫,各單詞之間用下劃線相連,例如,lowercase_underscore。
- 受保護的實例屬性,應該以單個下劃線開頭,例如,_leading_underscrore。
- 私有的實例屬性,應該以兩個下劃線開頭,例如,__double_leading_underscore。
- 類與異常,應該以每個單詞首字母大寫的形式來命名,例如,CapitalizedWord。
- 模塊級別的常量,應該全部採用大寫字母來拼寫,各單詞之間以下劃線相連,例如,ALL_CAPS。
- 類中的實例方法(instance method),應該把首個參數命名爲self,以表示該對象自身。
- 類方法(class method)的首個參數,應該命名爲cls,以表示該類自身。
表達式和語句
《The Zen of Python》中說:“每件事都應該有直白的做法,而且最好只有一種。”
- 採用內聯式的否定詞,而不要把否定詞放在整個表達式的前面,例如,應該寫if a is not b 而不是 if not a is b。
- 不要通過檢測長度的辦法(如if len(somelist) == 0)來判斷 somelist 是否爲[]或’'等空值,而是應該採用 if not somelist 這種寫法來判斷,它會假定:空值將自動評估爲 False。
- 檢測 somelist 是否爲[1]或’h1’等非空值時,也應如此,if somelist 語句默認會把非空的值判斷爲 True。
- 不要編寫單行的 if 語句、for 循環、while 循環及 except 複合語句,而是應該把這些語句分成多行來書寫,以示清晰。
- import 語句應該總是放在開頭。
- 引入模塊的時候,總是應該使用絕對名稱,而不應該根據當前模塊的路徑來使用相對名稱。例如,引入 bar 包中的 foo 模塊時,應該完整地寫出 from bar import foo,而不應該簡寫爲 import foo。
- 如果一定要以相對名稱來編寫 import 語句,那就採用明確的寫法:from.import foo。
- 文件中的那些 import 語句應該按順序分成三個部分,分別表示標準庫模塊、第三方模塊以及自用模塊。在每一部分之中,各 import 語句應該按模塊的字母順序來排列。