c++编码规范_Python02编码规范
俗話說無規(guī)范不方圓
官網(wǎng)
https://www.python.org/dev/peps/pep-0008/
前言
Guido的主要見解之一是代碼被讀取的次數(shù)多于其編寫的次數(shù)。此處提供的指南旨在提高代碼的可讀性,并使其在各種Python代碼中保持一致。正如PEP 20所說,“可讀性至關(guān)重要”。
代碼布局
縮進(jìn)
每個縮進(jìn)級別使用4個空格。
續(xù)行應(yīng)該使用在括號,方括號和花括號內(nèi)使用Python的隱式線垂直對齊包裝的元素,或使用懸掛式縮進(jìn)?[7]。使用懸掛式凹痕時,應(yīng)考慮以下幾點(diǎn):第一行不應(yīng)包含任何參數(shù),并且應(yīng)使用進(jìn)一步的縮進(jìn)形式將其清楚地區(qū)分為延續(xù)行:
最大線長限制
所有行最多79個字符。
為了使較長的文本塊具有較少的結(jié)構(gòu)限制(文檔字符串或注釋),行長應(yīng)限制為72個字符。
空行
用兩個空行包圍頂級函數(shù)和類定義。
類內(nèi)的方法定義由單個空白行包圍。
多余的空白行可以(分別)用于分隔相關(guān)功能組。一堆相關(guān)的單線(例如,一組虛擬實(shí)現(xiàn))之間可以省略空白行。
在函數(shù)中使用空白行,以節(jié)省空間,以指示邏輯部分。
源文件編碼
核心Python發(fā)行版中的代碼應(yīng)始終使用UTF-8(或Python 2中的ASCII)。
使用ASCII(在Python 2中)或UTF-8(在Python 3中)的文件不應(yīng)具有編碼聲明。
導(dǎo)入
1、導(dǎo)入通常應(yīng)在單獨(dú)的行上:
2、導(dǎo)入總是放在文件的頂部,緊隨任何模塊注釋和文檔字符串之后,以及模塊全局變量和常量之前。
導(dǎo)入應(yīng)按以下順序分組:
標(biāo)準(zhǔn)庫導(dǎo)入。
相關(guān)第三方進(jìn)口。
本地應(yīng)用程序/庫特定的導(dǎo)入。
您應(yīng)該在每組導(dǎo)入之間放置一個空白行。
3、推薦絕對導(dǎo)入,因?yàn)槿绻麑?dǎo)入系統(tǒng)配置不正確(例如,程序包中的目錄最終位于sys.path時),則它們通常更具可讀性,并且通常表現(xiàn)更好(或至少會提供更好的錯誤消息):
4、從包含類的模塊中導(dǎo)入類時,通常可以這樣拼寫:
5、應(yīng)該避免使用通配符導(dǎo)入(來自 import *),因?yàn)橥ㄅ浞共磺宄Q空間中存在哪些名稱,從而使閱讀器和許多自動化工具都感到困惑。
模塊級Dunder名稱
模塊級“dunders”(即名稱具有兩個前緣和兩個縱下劃線)如__all__,__author__,__version__等應(yīng)被放置在模塊文檔字符串之后,但在任何導(dǎo)入語句以外從__future__進(jìn)口。Python強(qiáng)制要求將來導(dǎo)入必須在模塊中出現(xiàn)在除文檔字符串以外的任何其他代碼之前:
字符串引號
在Python中,單引號字符串和雙引號字符串是相同的。本PEP對此不做任何建議。選擇一條規(guī)則并堅(jiān)持下去。但是,當(dāng)字符串包含單引號或雙引號字符時,請使用另一個以避免在字符串中使用反斜杠。它提高了可讀性。
對于三引號字符串,請始終使用雙引號字符以與PEP 257中的docstring約定一致。
表達(dá)式和語句中的空格
在以下情況下,請避免使用多余的空格:
注釋
與代碼矛盾的注釋比沒有注釋更糟糕。當(dāng)代碼更改時,始終要始終使注釋保持最新狀態(tài)!
評論應(yīng)為完整句子。第一個單詞應(yīng)大寫,除非它是一個以小寫字母開頭的標(biāo)識符(請勿更改標(biāo)識符的大小寫!)。
整體注釋通常由一個或多個完整句子組成的段落組成,每個句子以句點(diǎn)結(jié)尾。
在多句注釋中,除了最后一個句子之外,您應(yīng)該在句子結(jié)尾句后使用兩個空格。
確保您的注釋清晰明了,并且其他母語使用者也很容易理解。
來自非英語國家的Python編碼人員:請用英語寫您的評論,除非您有120%的把握確保不會說這種語言的人不會閱讀該代碼。
文檔字符串
在PEP 257中,編寫好的文檔字符串(也稱為“文檔字符串”)的約定不朽。
為所有公共模塊,函數(shù),類和方法編寫文檔字符串。對于非公共方法,文檔字符串不是必需的,但是您應(yīng)該具有描述該方法功能的注釋。該注釋應(yīng)出現(xiàn)在def行之后。
命名約定
Python庫的命名約定有點(diǎn)混亂,因此我們永遠(yuǎn)都無法做到完全一致-盡管如此,這是當(dāng)前推薦的命名標(biāo)準(zhǔn)。新的模塊和軟件包(包括第三方框架)應(yīng)按照這些標(biāo)準(zhǔn)編寫,但是如果現(xiàn)有庫具有不同的樣式,則首選內(nèi)部一致性。
首要原則
對于用戶而言,作為API公共部分可見的名稱應(yīng)遵循反映用法而不是實(shí)現(xiàn)的約定。
描述性:命名樣式
有很多不同的命名樣式。能夠獨(dú)立于它們的用途來識別正在使用的命名樣式。
通常區(qū)分以下命名樣式:
b(單個小寫字母)
B(單個大寫字母)
小寫
lower_case_with_underscores
大寫
UPPER_CASE_WITH_UNDERSCORES
大寫的單詞(或CapWords或CamelCase-之所以命名,是因?yàn)槠渥帜傅念嶔ね庥^[4])。有時也稱為StudlyCaps。
注意:在CapWords中使用首字母縮寫詞時,請使用首字母縮寫詞的所有字母大寫。因此,HTTPServerError比HttpServerError好。
mixedCase(與大小寫字母首字母小寫字母不同!)
Capitalized_Words_With_Underscores(難看!)
還有一種使用短的唯一前綴將相關(guān)名稱組合在一起的樣式。這在Python中使用不多,但是為了完整起見提到它。例如,os.stat()函數(shù)返回一個元組,該元組的項(xiàng)目傳統(tǒng)上具有諸如st_mode,st_size,st_mtime等名稱。(這樣做是為了強(qiáng)調(diào)與POSIX系統(tǒng)調(diào)用結(jié)構(gòu)的字段的對應(yīng)關(guān)系,這有助于程序員熟悉該結(jié)構(gòu)。)
軟件包和模塊名稱
模塊應(yīng)使用簡短的全小寫名稱。如果模塊名稱可以提高可讀性,則可以在模塊名稱中使用下劃線。盡管不鼓勵使用下劃線,但Python軟件包也應(yīng)使用短小寫全名。
當(dāng)用C或C ++編寫的擴(kuò)展模塊具有隨附的Python模塊提供更高級別(例如,更多面向?qū)ο?的接口時,C / C ++模塊具有下劃線(例如_socket)。
類名
類名通常應(yīng)使用CapWords約定。
在接口被記錄并主要用作可調(diào)用函數(shù)的情況下,可以代替使用函數(shù)的命名約定。
請注意,內(nèi)置名稱有一個單獨(dú)的約定:大多數(shù)內(nèi)置名稱是單個單詞(或兩個單詞一起運(yùn)行),而CapWords約定僅用于異常名稱和內(nèi)置常量。
類型變量名
在PEP 484中引入的類型變量的名稱通常應(yīng)使用CapWords,而應(yīng)使用短名稱:T,AnyStr,Num。建議將后綴_co或_contra添加到用于分別聲明協(xié)變或反變行為的變量中:
異常名稱
因?yàn)楫惓?yīng)該是類,所以在這里適用類命名約定。但是,您應(yīng)該在異常名稱上使用后綴“ Error”(如果異常實(shí)際上是一個錯誤)。
全局變量名
(我們希望這些變量只能在一個模塊內(nèi)使用。)這些約定與函數(shù)的約定大致相同。
設(shè)計用于通過M import *使用的模塊應(yīng)使用__all__機(jī)制以防止導(dǎo)出全局變量,或使用較早的約定在此類全局變量前加下劃線(您可能需要這樣做以表明這些全局變量是“非公共模塊” ”)。
函數(shù)和變量名
函數(shù)名稱應(yīng)小寫,必要時用下劃線分隔單詞以提高可讀性。
變量名與函數(shù)名遵循相同的約定。
僅在已經(jīng)是主流樣式(例如threading.py)的上下文中才允許使用mixedCase,以保持向后兼容性。
函數(shù)和方法參數(shù)
始終將self作為實(shí)例方法的第一個參數(shù)。
始終對類方法的第一個參數(shù)使用cls。
如果函數(shù)參數(shù)的名稱與保留關(guān)鍵字發(fā)生沖突,通常最好在末尾附加一個下劃線,而不要使用縮寫或拼寫錯誤。因此,class_優(yōu)于clss。(也許最好通過使用同義詞來避免此類沖突。)
方法名稱和實(shí)例變量
使用函數(shù)命名規(guī)則:小寫字母,必要時用下劃線分隔單詞,以提高可讀性。
僅對非公共方法和實(shí)例變量使用一個前劃線。
為避免名稱與子類沖突,請使用兩個前導(dǎo)下劃線來調(diào)用Python的名稱處理規(guī)則。
Python用類名來修飾這些名稱:如果類Foo具有名為__a的屬性,則Foo .__ a不能訪問它。(堅(jiān)持的用戶仍然可以通過調(diào)用Foo._Foo__a來獲得訪問權(quán)限。)通常,雙引號下劃線僅應(yīng)用于避免名稱與設(shè)計為子類的類中的屬性發(fā)生沖突。
注意:關(guān)于__name的使用存在一些爭議(請參見下文)。
常數(shù)
常量通常在模塊級別定義,并以所有大寫字母書寫,并用下劃線分隔單詞。示例包括MAX_OVERFLOW和TOTAL。
總結(jié)
以上是生活随笔為你收集整理的c++编码规范_Python02编码规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学java_北京Java培训班好吗?去哪
- 下一篇: vhdl变量赋初值_1.6 C++变量