PEP8 Python 編碼規(guī)范整理

PEP8——Python代碼規(guī)范 - CSDN博客

一 代碼編排

1 縮進垢乙。4個空格的縮進(編輯器都可以完成此功能)渣慕,不使用Tap氮兵,更不能混合使用Tap和空格裂逐。

2 每行最大長度79,換行可以使用反斜杠泣栈,最好使用圓括號卜高。換行點要在操作符的后邊敲回車弥姻。

3 類和top-level函數(shù)定義之間空兩行;類中的方法定義之間空一行掺涛;函數(shù)內(nèi)邏輯無關段落之間空一行庭敦;其他地方盡量不要再空行。

二 文檔編排

1 模塊內(nèi)容的順序:模塊說明和docstring—import—globals&constants—其他定義薪缆。其中import部分秧廉,又按標準、三方和自己編寫順序依次排放拣帽,之間空一行疼电。

2 不要在一句import中多個庫,比如import os, sys不推薦减拭。

3 如果采用from XX import XX引用庫蔽豺,可以省略‘module.’,都是可能出現(xiàn)命名沖突峡谊,這時就要采用import XX茫虽。

三 空格的使用

總體原則,避免不必要的空格既们。

1 各種右括號前不要加空格濒析。

2 逗號、冒號啥纸、分號前不要加空格号杏。

3 函數(shù)的左括號前不要加空格。如Func(1)斯棒。

4 序列的左括號前不要加空格盾致。如list[2]。

5 操作符左右各加一個空格荣暮,不要為了對齊增加空格庭惜。

6 函數(shù)默認參數(shù)使用的賦值符左右省略空格。

7 不要將多句語句寫在同一行穗酥,盡管使用‘护赊;’允許。

8 if/for/while語句中砾跃,即使執(zhí)行語句只有一句骏啰,也必須另起一行。

四 注釋

總體原則抽高,錯誤的注釋不如沒有注釋判耕。所以當一段代碼發(fā)生變化時,第一件事就是要修改注釋翘骂!

注釋必須使用英文壁熄,最好是完整的句子帚豪,首字母大寫,句后要有結(jié)束符草丧,結(jié)束符后跟兩個空格志鞍,開始下一句。如果是短語方仿,可以省略結(jié)束符固棚。

1 塊注釋,在一段代碼前增加的注釋仙蚜。在‘#’后加一空格此洲。段落之間以只有‘#’的行間隔。比如:

# Description : Module config.

# Input : None

# Output : None

2 行注釋委粉,在一句代碼后加注釋呜师。比如:x = x + 1 # Increment x

但是這種方式盡量少使用。

3 避免無謂的注釋贾节。

五 文檔描述

1 為所有的共有模塊汁汗、函數(shù)、類栗涂、方法寫docstrings知牌;非共有的沒有必要,但是可以寫注釋(在def的下一行)斤程。

2 如果docstring要換行角寸,參考如下例子,詳見PEP 257

"""Return a foobang

Optional plotz says to frobnicate the bizbaz first.

"""

六 命名規(guī)范

總體原則,新編代碼必須按下面命名風格進行忿墅,現(xiàn)有庫的編碼盡量保持風格扁藕。

1 盡量單獨使用小寫字母‘l’,大寫字母‘O’等容易混淆的字母疚脐。

2 模塊命名盡量短小亿柑,使用全部小寫的方式,可以使用下劃線棍弄。

3 包命名盡量短小望薄,使用全部小寫的方式,不可以使用下劃線照卦。

4 類的命名使用CapWords的方式式矫,模塊內(nèi)部使用的類采用_CapWords的方式乡摹。

5 異常命名使用CapWords+Error后綴的方式役耕。

6 全局變量盡量只在模塊內(nèi)有效,類似C語言中的static聪廉。實現(xiàn)方法有兩種瞬痘,一是__all__機制;二是前綴一個下劃線故慈。

7 函數(shù)命名使用全部小寫的方式,可以使用下劃線框全。

8 常量命名使用全部大寫的方式察绷,可以使用下劃線。

9 類的屬性(方法和變量)命名使用全部小寫的方式津辩,可以使用下劃線拆撼。

9 類的屬性有3種作用域public、non-public和subclass API喘沿,可以理解成C++中的public闸度、private、protected蚜印,non-public屬性前莺禁,前綴一條下劃線。

11 類的屬性若與關鍵字名字沖突窄赋,后綴一下劃線哟冬,盡量不要使用縮略等其他方式。

12 為避免與子類屬性命名沖突忆绰,在類的一些屬性前浩峡,前綴兩條下劃線。比如:類Foo中聲明__a,訪問時错敢,只能通過Foo._Foo__a红符,避免歧義。如果子類也叫Foo伐债,那就無能為力了预侯。

13 類的方法第一個參數(shù)必須是self,而靜態(tài)方法第一個參數(shù)必須是cls峰锁。

七 編碼建議

1 編碼中考慮到其他python實現(xiàn)的效率等問題萎馅,比如運算符‘+’在CPython(Python)中效率很高,都是Jython中卻非常低虹蒋,所以應該采用.join()的方式糜芳。

2 盡可能使用‘is’‘is not’取代‘==’,比如if x is not None 要優(yōu)于if x魄衅。

3 使用基于類的異常峭竣,每個模塊或包都有自己的異常類,此異常類繼承自Exception晃虫。

4 異常中不要使用裸露的except皆撩,except后跟具體的exceptions。

5 異常中try的代碼盡可能少。比如:

try:

value = collection[key]

except KeyError:

return key_not_found(key)

else:

return handle_value(value)

要優(yōu)于

try:

# Too broad!

return handle_value(collection[key])

except KeyError:

# Will also catch KeyError raised by handle_value()

return key_not_found(key)

6 使用startswith() and endswith()代替切片進行序列前綴或后綴的檢查扛吞。比如

Yes: if foo.startswith(‘bar’):優(yōu)于

No: if foo[:3] == ‘bar’:

7 使用isinstance()比較對象的類型呻惕。比如

Yes: if isinstance(obj, int): 優(yōu)于

No: if type(obj) is type(1):

8 判斷序列空或不空,有如下規(guī)則

Yes: if not seq:

if seq:

優(yōu)于

No: if len(seq)

if not len(seq)

9 字符串不要以空格收尾滥比。

10 二進制數(shù)據(jù)判斷使用 if boolvalue的方式亚脆。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盲泛,隨后出現(xiàn)的幾起案子濒持,更是在濱河造成了極大的恐慌,老刑警劉巖寺滚,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弥喉,死亡現(xiàn)場離奇詭異,居然都是意外死亡玛迄,警方通過查閱死者的電腦和手機由境,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓖议,“玉大人虏杰,你說我怎么就攤上這事±障海” “怎么了纺阔?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長修然。 經(jīng)常有香客問我笛钝,道長,這世上最難降的妖魔是什么愕宋? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任玻靡,我火速辦了婚禮,結(jié)果婚禮上中贝,老公的妹妹穿的比我還像新娘囤捻。我一直安慰自己,他們只是感情好邻寿,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布蝎土。 她就那樣靜靜地躺著,像睡著了一般绣否。 火紅的嫁衣襯著肌膚如雪誊涯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天蒜撮,我揣著相機與錄音暴构,去河邊找鬼。 笑死,一個胖子當著我的面吹牛丹壕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薇溃,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼菌赖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沐序?” 一聲冷哼從身側(cè)響起琉用,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎策幼,沒想到半個月后邑时,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡特姐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年晶丘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唐含。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡浅浮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捷枯,到底是詐尸還是另有隱情滚秩,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布淮捆,位于F島的核電站郁油,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攀痊。R本人自食惡果不足惜桐腌,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苟径。 院中可真熱鬧哩掺,春花似錦、人聲如沸涩笤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹬碧。三九已至舱禽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恩沽,已是汗流浹背誊稚。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人里伯。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓城瞎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疾瓮。 傳聞我的和親對象是個殘疾皇子脖镀,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)狼电,斷路器蜒灰,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • --< > 令人討厭的小人物身上有著愚蠢的一致性 --(A Foolish Consistency is the ...
    LittleWizard閱讀 3,213評論 0 4
  • 包(lib)、模塊(module) 在Python中肩碟,存在包和模塊兩個常見概念强窖。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,800評論 0 27
  • 近期很多城市房價猛漲,北京也在列削祈〕崮纾回想起年初的買房決定,不覺間倒吸幾口涼氣髓抑。若猶豫至今未巫,我勢必得離開北京了。 留守...
    一個寫字的閱讀 482評論 4 4
  • 進入每年的6~9月高溫季節(jié)启昧,對蝦養(yǎng)殖也進入關鍵的生長高峰期叙凡,此時對蝦生長速度加快,但同時也是問題最多的階段密末,稍有不...
    A張濤閱讀 172評論 0 0