PEP 8 Python編碼風格指南概要

Wray_Zheng發表於2017-02-25

Python 擁有簡潔優雅的語法,但這並不意味著開發者一定能寫出簡潔而優雅的程式碼。要寫出好的程式碼,就要遵循一定的規則。Python 官方給出了 PEP8 風格指南,建議每位 Python 開發者都應該閱讀一遍,並在開發過程中遵循該程式設計規範。

PEP 8 全稱為 Python Enhancement Proposal #8 , 中文叫做《8號Python增強提案》。PEP 8 中列出了很多程式設計的細節,認真實踐有助於養成良好的程式設計習慣。

PEP 8 官方文件:PEP 8 -- Style Guide for Python Code

PEP 8 概要

下面列出 PEP 8 中提到的,並且每位 Python 開發者都應該遵循的基本要求,段落摘自 Effective Python 中文譯本。

空白

Python 中的空白(whitespace)會影響程式碼的含義。 Python 程式設計師使用空白的時候尤其在意,因為它們還會影響程式碼的清晰程度。

  • 使用 space(空格)來表示縮排,而不要用 tab(製表符)。
  • 和語法相關的每一層縮排都用 4 個空格來表示。
  • 每行的字元數不應超過 79。
  • 對於佔據多行的長表示式來說,除了首行之外的其餘各行都應該在通常的縮排級別之上再加 4 個空格。
  • 檔案中的函式與類之間應該用兩個空行隔開。
  • 在同一個類中,各方法之間應該用一個空行隔開。
  • 在使用下標來獲取列表元素、呼叫函式或給關鍵字引數賦值的時候,不要在兩旁新增空格。
  • 為變數賦值的時候,賦值符號的左側和右側應該各自寫上一個空格,而且只寫一個就好。

命名

PEP 8 提倡採用不同的命名風格來編寫 Python 程式碼中的各個部分,以便在閱讀程式碼時可以根據這些名稱看出它們在 Python 語言中的角色。

  • 函式、變數及屬性應該用小寫字母來拼寫,各單詞之間以下劃線相連,例如,lowercase_underscore。
  • 受保護的例項屬性,應該以單個下劃線開頭,例如, _leading_underscore。
  • 私有的例項屬性,應該以兩個下劃線開頭,例如, __double_leading_underscore。
  • 類與異常,應該以每個單詞首字母均大寫的形式來命名,例如, CapitalizedWord。
  • 模組級別的常量,應該全部採用大寫字母來拼寫,各單詞之間以下劃線相連,例如, ALL_CAPS。
  • 類中的例項方法(instance method),應該把首個引數命名為 self,以表示該物件自身。
  • 類方法(class method)的首個引數,應該命名為 cls,以表示該類自身。

表示式和語句

《The Zen of Python》(Python 之禪)中說:“每件事都應該有直白的做法,而且最好只有一種。” PEP 8 在制定表示式和語句的風格時,就試著體現了這種思想。

  • 採用內聯形式的否定詞,而不要把否定詞放在整個表示式的前面,例如,應該寫 if a is not b 而不是 if not a is b。
  • 不要通過檢測長度的辦法(如 if len(somelist) == 0)來判斷 somelist 是否為 [] 或 '' 等空值,而是應該採用 if not somelist 這種寫法來判斷,它會假定:空值將自動評估為 False。
  • 檢測 somelist 是否為 [1] 或 'hi' 等非空值時,也應如此, if somelist 語句預設會把非空的值判斷為 True。
  • 不要編寫單行的 if 語句、 for 迴圈、 while 迴圈及 except 複合語句,而是應該把這些語句分成多行來書寫,以示清晰。
  • import 語句應該總是放在檔案開頭。
  • 引入模組的時候,總是應該使用絕對名稱,而不應該根據當前模組的路徑來使用相對名稱。例如,引入 bar 包中的 foo 模組時,應該完整地寫出 from bar import foo,而不應該簡寫為 import foo。
  • 如果一定要以相對名稱來編寫 import 語句,那就採用明確的寫法: from.import foo。
  • 檔案中的那些 import 語句應該按順序劃分成三個部分,分別表示標準庫模組、第三方模組以及自用模組。在每一部分之中,各 import 語句應該按模組的字母順序來排列。

PEP 8 檢測工具

我們可以使用 Johann C. Rocholl 開發的 pep8 程式,來自動檢測程式碼是否符合 PEP8 規範。

通過 pip 來快速安裝該程式:

$ pip install pep8複製程式碼

使用格式

$ pep8 [options] input...複製程式碼

主要引數解釋:

  • --first 只顯示每一類錯誤中的第一個錯誤
  • --exclude=patterns 指定要排除的檔案或資料夾模式,以逗號分隔
  • --filename=patterns 指定待檢測的檔名模式,預設以逗號分隔
  • --select=errors 指定要檢測的錯誤型別
  • --ignore=errors 指定要忽略的錯誤型別
  • --show-source 顯示每一個錯誤的原始碼
  • --show-pep8 顯示每個錯誤的具體 PEP8 規範(將自動設定 --first
  • --statistics 對錯誤和警告進行計數
  • --count 將錯誤和警告的總數列印到標準輸出,如果不為零,那麼退出程式碼將會被設為1
  • --max-line-length 設定每行的最大長度,預設為79
  • --format=format 設定錯誤的格式

更詳細的使用介紹,請參考此文件:pep8 documentation

原文連結: www.codebelief.com/article/201…

相關文章