《Effective Python 第二版》第二條 遵循PEP8風格指南
遵循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開發者採用同一套程式碼風格,可以使專案更利於多人協作;
- 採用一直的風格來編寫程式碼,可以領後續的修改工作變得更為容易。
相關文章
- PEP8風格和python版本區別Python
- 《Effective Java 第二版》讀書筆記Java筆記
- 《Python基礎教程第二版》第二章-Python列表和元祖Python
- AI繪畫第二彈——影象風格遷移AI
- 部落格園皮膚設定 - 第二版
- Json風格指南JSON
- 《Google 開源專案風格指南》中文版Go
- 《流暢的Python》第二版 第11章Python
- 《流暢的Python》第二版 第12章Python
- Google JavaScript 風格指南GoJavaScript
- 《Python基礎教程第二版》第五章-條件、迴圈和其他語句(二)Python
- JavaScript編碼風格指南JavaScript
- RayWenderlich 官方 Swift 風格指南Swift
- JavaScript 編碼風格指南JavaScript
- 增補部落格 第二十篇 python 篩法求素數Python
- 部落格園外包之第二單
- 【翻譯】Python PEP8編碼規範(中文版)Python
- Magnus Lie Hetland python 第二版教程的巨大問題~Python
- 開源!《Python 機器學習》第二版(附電子版 pdf)Python機器學習
- 並不是所有SAP產品的UX,都得遵循Fiori UX風格UX
- Vue 前端程式碼風格指南Vue前端
- 中文寫作排版風格指南
- Google JavaScript 程式碼風格指南GoJavaScript
- python的PEP8規範Python
- 第二次部落格作業
- 軟工第二週開課部落格軟工
- 增補部落格 第二十一篇 python 查詢鞍點Python
- 聚合搜尋引擎第二版
- Python3網路爬蟲開發實戰(第二版)Python爬蟲
- 軟體工程第二週開篇部落格軟體工程
- OO第二次部落格作業
- oop第二次部落格作業OOP
- 第二課 Python基礎語法Python
- 學Python的第二天Python
- 增補部落格 第二十二篇 python 牛頓迭代法Python
- python第二階段(15)numpy入門基礎-視覺化之條形圖Python視覺化
- 微信分享筆記(第二版)筆記
- React 實現 instagram 風格進度條React