pep 8 规范的一些记录
一、pep8起源
龜叔創(chuàng)立Python的初衷里就有創(chuàng)立一個容易閱讀的編程語言,所以親自操刀寫了pep8 代碼規(guī)范,每個項目開始前都要有一個共識,就是自己的代碼規(guī)范,pep8 就是一個很好的范本。
二、官網(wǎng)鏈接
https://www.python.org/dev/peps/pep-0008/
中文翻譯鏈接
https://my.oschina.net/u/1433482/blog/464444
三、重要總結(jié)
一致性問題:
風(fēng)格指南強調(diào)一致性。項目、模塊或函數(shù)保持一致都很重要。
當(dāng)遵循指南降低代碼一致性,可讀性的時候就不必強行修改。
代碼布局:
縮進四個空格代替tab
行寬79個字符,文本長塊72個字符
字符編碼總是用UTF-8
導(dǎo)入模塊:
導(dǎo)入時單行導(dǎo)入,開頭導(dǎo)入,
順序為標(biāo)準(zhǔn)庫,本地庫,第三方庫,
盡量使用絕對路徑,不用通配符導(dǎo)入,
空格:
括號內(nèi)沒有空格,
關(guān)鍵字參數(shù)和默認(rèn)值參數(shù)的前后不要加空格
逗號,分號,冒號前無空格
運算符后有空格,
不推薦復(fù)合語句,一句一行
用英文寫注釋,及時更新注釋,少用行內(nèi)注釋,文檔字符串:為所有公共模塊、函數(shù)、類和方法書寫
命名:
最重要的原則
用戶可見的API命名應(yīng)遵循使用約定而不是實現(xiàn)。(不太明白)
命名風(fēng)格
-
b(單個小寫字母)
-
B(單個大寫字母)
-
lowercase(小寫串)
-
lower_case_with_underscores(帶下劃線的小寫)
-
UPPERCASE(大寫串)
-
UPPER_CASE_WITH_UNDERSCORES(帶下劃線的大寫串)
-
CapitalizedWords(首字母大寫的單詞串或駝峰縮寫)注意: 使用大寫縮寫時,縮寫使用大寫字母更好。故 HTTPServerError 比?HttpServerError?更好。
-
mixedCase(混合大小寫,第一個單詞是小寫)
-
Capitalized_Words_With_Underscores(帶下劃線,首字母大寫,丑陋)
首尾有下劃線的情況:
-
_single_leading_underscore:(單前置下劃線): 弱內(nèi)部使用標(biāo)志。 例如"from M import " 不會導(dǎo)入以下劃線開頭的對象。
-
single_trailing_underscore_(單后置下劃線): 用于避免與 Python關(guān)鍵詞的沖突。 例如:Tkinter.Toplevel(master,?class_='ClassName')
-
__double_leading_underscore(雙前置下劃線): 當(dāng)用于命名類屬性,會觸發(fā)名字重整。 (在類FooBar中,__boo變成 _FooBar__boo)。
-
__double_leading_and_trailing_underscore__(雙前后下劃線):用戶名字空間的魔法對象或?qū)傩浴@?__init__ , __import__ or __file__,不要自己發(fā)明這樣的名字。
命名約定規(guī)范
-
避免采用的名字
決不要用字符'l'(小寫字母el),'O'(大寫字母oh),或 'I'(大寫字母eye) 作為單個字符的變量名。一些字體中,這些字符不能與數(shù)字1和0區(qū)別。用'L' 代替'l'時。
-
包和模塊名
模塊名要簡短,全部用小寫字母,可使用下劃線以提高可讀性。包名和模塊名類似,但不推薦使用下劃線。
模塊名對應(yīng)到文件名,有些文件系統(tǒng)不區(qū)分大小寫且截短長名字,在 Unix上不是問題,但當(dāng)把代碼遷移到 Mac、Windows 或 DOS 上時,就可能是個問題。當(dāng)然隨著系統(tǒng)的演進,這個問題已經(jīng)不是經(jīng)常出現(xiàn)。
另外有些模塊底層用C或C++ 書寫,并有對應(yīng)的高層Python模塊,C/C++模塊名有一個前置下劃線 (如:_socket)。
-
類名
遵循CapWord。
接口需要文檔化并且可以調(diào)用時,可能使用函數(shù)的命名規(guī)則。
注意大部分內(nèi)置的名字是單個單詞(或兩個),CapWord只適用于異常名稱和內(nèi)置的常量。
-
異常名
如果確實是錯誤,需要在類名添加后綴 "Error"。
-
全局變量名
變量盡量只用于模塊內(nèi)部,約定類似函數(shù)。
對設(shè)計為通過 "from M import " 來使用的模塊,應(yīng)采用 __all__ 機制來防止導(dǎo)入全局變量;或者為全局變量加一個前置下劃線。
-
函數(shù)名
函數(shù)名應(yīng)該為小寫,必要時可用下劃線分隔單詞以增加可讀性。 mixedCase(混合大小寫)僅被允許用于兼容性考慮(如: threading.py)。
-
函數(shù)和方法的參數(shù)
實例方法第一個參數(shù)是 'self'。
類方法第一個參數(shù)是 'cls'。
如果函數(shù)的參數(shù)名與保留關(guān)鍵字沖突,通常在參數(shù)名后加一個下劃線。
-
方法名和實例變量
同函數(shù)命名規(guī)則。
非公開方法和實例變量增加一個前置下劃線。
為避免與子類命名沖突,采用兩個前置下劃線來觸發(fā)重整。類Foo屬性名為__a, 不能以 Foo.__a訪問。(執(zhí)著的用戶還是可以通過Foo._Foo__a。) 通常雙前置下劃線僅被用來避免與基類的屬性發(fā)生命名沖突。
-
常量
常量通常在模塊級定義,由大寫字母用下劃線分隔組成。比如括MAX_OVERFLOW和TOTAL。
-
繼承設(shè)計
考慮類的方法和實例變量(統(tǒng)稱為屬性)是否公開。如果有疑問,選擇不公開;把其改為公開比把公開屬性改為非公開要容易。
公開屬性可供所有人使用,并通常向后兼容。非公開屬性不給第三方使用、可變甚至被移除。
這里不使用術(shù)語"private", Python中沒有屬性是真正私有的。
另一類屬性是子類API(在其他語言中通常稱為 "protected")。 一些類被設(shè)計為基類,可以擴展和修改。
謹(jǐn)記這些Python指南:
公開屬性應(yīng)該沒有前導(dǎo)下劃線。
如果公開屬性名和保留關(guān)鍵字沖突,可以添加后置下劃線
簡單的公開數(shù)據(jù)屬性,最好只公開屬性名,沒有復(fù)雜的訪問/修改方法,python的Property提供了很好的封裝方法。 d.如果不希望子類使用的屬性,考慮用兩個前置下劃線(沒有后置下劃線)命名。
公共和內(nèi)部接口
任何向后兼容的保證只適用于公共接口。
文檔化的接口通常是公共的,除非明說明是臨時的或為內(nèi)部接口、其他所有接口默認(rèn)是內(nèi)部的。
為了更好地支持內(nèi)省,模塊要在__all__屬性列出公共API。
內(nèi)部接口要有前置下劃線。
如果命名空間(包、模塊或類)是內(nèi)部的,里面的接口也是內(nèi)部的。
導(dǎo)入名稱應(yīng)視為實現(xiàn)細(xì)節(jié)。其他模塊不能間接訪名字,除非在模塊的API文檔中明確記載,如os.path中或包的__init__暴露了子模塊。
轉(zhuǎn)載于:https://www.cnblogs.com/xinghuaikang/p/8486493.html
總結(jié)
以上是生活随笔為你收集整理的pep 8 规范的一些记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东航浦发联名金卡2000额度怎么提额?信
- 下一篇: 分块入门