《Effective Python 第二版》第二條 遵循PEP8風格指南

溝通反思總結發表於2020-11-05

遵循PEP8風格指南

《Python Enhancement Proposal #8》(8號增強提案),又叫PEP8,它是針對Python程式碼格式而編訂的風格指南。儘管可以在保證語法正確的前提下隨意編寫Python程式碼,但是,採用一致的風格來書寫也可令專案更加易懂、更加易讀、採用和其他Python程式設計師相同的風格來寫程式碼,也可以使專案更利於多人協作。即便程式碼只會由你自己閱讀,遵循這套風格也依然可以令後續的修改變得更容易一些。
PEP8地址:http://www.python.org/dev/peps/pep-0008
下面列出幾條絕對應該遵守的規則。
**空白:**Python中的空白會影響程式碼的含義。它們會影響程式碼的清晰程度。

  • 能用space來表示縮排,而不要用tab(製表符);
  • 和語法相關的每一層縮排都用4個空格來表示;
  • 每行的字元數不應超過79;
  • 對於佔據多行的長表示式來說,除了首行之外的其餘各行都應該在通常的縮排級別之上再加4個空格;
  • 檔案中的函式與類之間應該用兩個空行隔開;
  • 在同一個類中,各方法之間應該用一個空行隔開;
  • 在使用下標來獲取列表元素、呼叫函式或給關鍵字引數賦值時,不要在兩旁加空格;
  • 為變數賦值時,符號左右兩側只寫一個空格。
    **命名:**PEP 8提倡採用不同的命名風格來編寫Python程式碼中的各個部分,提升可讀性。
  • 函式、變數及屬性應該用小寫字母來拼寫,各單詞之間以下劃線相連,例如:red_apple;
  • 受保護的例項屬性,應該以單個下劃線開頭,例如:_red_apple;
  • 私有的例項屬性,應該以兩個下劃線開頭,例如:__red_apple;
  • 類與異常,應該以每個單詞首字母均大寫的形式來命名,例如:RedApple;
  • 模組級別的常量,應該全部採用大寫字母來拼寫,各單詞之間以下劃線相連,例如:RED_APPLE;
  • 類中的例項方法,應該把首個引數命名為self,以表示該物件自身;
  • 類方法的收割引數,應該命名為cls,以表示該類自身。
    表示式和語句:
  • 採用內聯形式的否定詞,而不要把否定詞放在整個表示式的前面,例如,應該寫if a is not b而不是if not a is b;
  • 不要通過檢測長度的方法(如if len(somelist) == 0)來判斷somelist是否為[]或"等空值,而是應該採用if not somelist這種寫法來判斷,它會假定:空值將自動評估為False;
  • 檢測sonelist是否為[1]或’hi’等空值時,也應如此,if somelist語句會預設把非空的值判斷為True;
  • 不要編寫單行的if語句、for迴圈、while迴圈以及except複合語句,而是應該分成多行來書寫;
  • import語句應該總是放在檔案開頭;
  • 引入模組時,總是應該使用絕對名稱,而不應該根據當前模組的路徑來使用相對名稱。例如,引入bar包中的foo模組時,應該完整地寫出from bar import foo,而不應該簡寫為import foo;
  • 如果一定要以相對名稱來編寫import語句,那就採用明確的寫法:from.import.foo;
  • 檔案中的那些import語句應該按順序劃分為三個部分,分別表示標準庫模組、第三方模組以及自用模組。在每一部分之中,各import語句應該按模組的字母順序來排列。
    注:Pylint(http://www.pylint.org/)是一款流行的Python原始碼靜態分析工具。它可以自動檢查受測程式碼是否符合PEP 8風格指南,而且還能找出Python程式裡的多種常見錯誤。
    要點:
  • 當編寫Python程式碼時,總是應該遵循PEP 8風格指南;
  • 與廣大Python開發者採用同一套程式碼風格,可以使專案更利於多人協作;
  • 採用一直的風格來編寫程式碼,可以領後續的修改工作變得更為容易。

相關文章