PEP 8 Python編碼風格指南概要

Python 擁有簡潔優雅的語法,但這並不意味着開發者必定能寫出簡潔而優雅的代碼。要寫出好的代碼,就要遵循必定的規則。Python 官方給出了 PEP8 風格指南,建議每位 Python 開發者都應該閱讀一遍,並在開發過程當中遵循該編程規範。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 中文譯本。api

空白bash

Python 中的空白(whitespace)會影響代碼的含義。 Python 程序員使用空白的時候尤爲在乎,由於它們還會影響代碼的清晰程度。ide

  • 使用 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,以表示該類自身。

表達式和語句ui

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

  • 採用內聯形式的否認詞,而不要把否認詞放在整個表達式的前面,例如,應該寫 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…

相關文章
相關標籤/搜索