每日分享Progress is impossible without change, and those who cannot change their minds cannot change anything. 沒(méi)有改變就不可能取得進(jìn)步,那些不愿改變想法的人無(wú)法改變?nèi)魏问隆?/p> 小閆語(yǔ)錄: 想要改變,首先是改變想法,否則只能重蹈覆轍。 PEP8規(guī)范當(dāng)入職一家公司,看到了一份亂糟糟的源碼,你是不是心里奔騰著無(wú)數(shù)的草泥馬?當(dāng)你離職,留給后人的代碼又如何呢?與人方便與己方便,規(guī)范代碼,從我做起。為了讓我們的代碼提高可讀性,便于后期維護(hù),官方提供了一種規(guī)范,這就是PEP8。那么具體的內(nèi)容是什么呢?下面一起來(lái)看看吧。 1.縮進(jìn)1.對(duì)于每一級(jí)縮進(jìn),采用四個(gè)空格(有的公司使用3個(gè)空格,視情況而定,但是官方推薦為4個(gè))。如下:
也許你因?yàn)槭褂靡恍┕ぞ?,?xí)慣了Tab鍵。但是有一點(diǎn)你要明白,有些地方tab鍵不是4個(gè)空格,而且python3中不允許混合使用空格和Tab鍵縮進(jìn)。 2.括號(hào)里面包裹的參數(shù)過(guò)多時(shí),可以通過(guò)換行縮進(jìn)來(lái)表示,如下:
當(dāng)然,下面的示例也是符合規(guī)范的:
2.行最大長(zhǎng)度為了查看代碼時(shí),不需要來(lái)回的拉取滾動(dòng)條,影響體驗(yàn),所有行限制的最大字符數(shù)為79。對(duì)于文檔字符串或者注釋則應(yīng)控制在72個(gè)字符內(nèi)。 對(duì)于較長(zhǎng)的代碼優(yōu)先使用的續(xù)行方式并不是通過(guò)反斜杠,而是通過(guò)小括號(hào),中括號(hào)以及大括號(hào)中的隱式續(xù)行方式實(shí)現(xiàn)。 3.二元運(yùn)算符在使用一些二元運(yùn)算符時(shí),如果變量名超長(zhǎng),需要換行,怎么辦?答案是在運(yùn)算符之前換行。
但是為了便于查看,盡量寫(xiě)在一行。 4.空行1.頂層函數(shù)和類定義時(shí),前后用兩個(gè)空行隔開(kāi)。 2.類里面的方法定義用一個(gè)空行隔開(kāi)。 3.對(duì)于函數(shù)中不同的邏輯塊可以用空行隔開(kāi)。 5.源代碼1.Python核心發(fā)布版本中的代碼總是以UTF-8格式編碼(或者在Python2中用ASCII編碼)。 2.使用ASCII(在Python2中)或UTF-8(在Python3中)編碼的文件不應(yīng)具有編碼聲明。 3.在標(biāo)準(zhǔn)庫(kù)中,如果需要使用非默認(rèn)的編碼,應(yīng)該將他們放在注釋或者文檔字符串中。比如作者的姓名。 6.導(dǎo)入1.我們?cè)趯?dǎo)入模塊的時(shí)候,最好是放在頂部,而且還應(yīng)該遵循一定的規(guī)律:先導(dǎo)入標(biāo)準(zhǔn)庫(kù),再導(dǎo)入相關(guān)第三方庫(kù),最后導(dǎo)入本地模塊應(yīng)用之類的。每一組導(dǎo)入之間,加上空行就最好不過(guò)了。 2.當(dāng)然有時(shí)為了避免出現(xiàn)循環(huán)導(dǎo)入的問(wèn)題,我們需要在特殊的地方導(dǎo)入,這也無(wú)可厚非。 3.導(dǎo)包的時(shí)候還要注意使用絕對(duì)路徑導(dǎo)入,增加可讀性,提高代碼性能。但是凡事有例外,比如你的絕對(duì)路徑那么長(zhǎng),好吧,我比劃了一下,你沒(méi)有看見(jiàn),不怪我。這時(shí)你可以采用相對(duì)路徑:
4.避免使用通配符的導(dǎo)入,這樣會(huì)增加命名空間中名字的重復(fù)率。如下的方式,不推薦使用:
7.引號(hào)單引號(hào)和雙引號(hào)是相同的,根據(jù)你自己的喜好使用。但是為了避免出錯(cuò),盡量使用單雙引號(hào)包裹的形式;而不是單引號(hào)里面繼續(xù)使用單引號(hào),再用反斜杠進(jìn)行轉(zhuǎn)義。 8.表達(dá)式中的空格問(wèn)題1.對(duì)于小括號(hào)、中括號(hào)和大括號(hào)的使用,表達(dá)式緊跟括號(hào),不要添加空格。
2.逗號(hào)、封號(hào)、冒號(hào)等緊跟前面字符:
3.冒號(hào)再切片中,就像二元運(yùn)算符一樣,兩邊應(yīng)該用相同數(shù)量的空格:
9.注釋有一句話是這樣說(shuō)的:與代碼相矛盾的注釋比沒(méi)有注釋還糟糕。所以請(qǐng)不要亂添加注釋,而且在修改完代碼之后,請(qǐng)更新你的注釋,不要給后人留下一個(gè)爛攤子。 緊跟代碼的注釋,應(yīng)有至少兩個(gè)空格的分割,如下:
10.命名規(guī)范1.命名與python中標(biāo)識(shí)符的命名規(guī)則一樣,由字母數(shù)字下劃線組成,且數(shù)字不能開(kāi)頭。 2.當(dāng)然還有一些特殊的規(guī)則,比如大駝峰和小駝峰命名形式。 3.如果以單下劃線開(kāi)頭命名,那么在 4.有時(shí)候你會(huì)看到一些以單下劃線結(jié)尾的名字,不要奇怪。這是為了和python內(nèi)部關(guān)鍵詞不沖突的一種約定。 5.命名的時(shí)候不要使用魔方方法的形式如 6.避免混淆,不要使用有歧義的字符。如 7.類名首字母請(qǐng)大寫(xiě)。 8.異常命名的時(shí)候最后以 9.命名要做到見(jiàn)名知義。 10.函數(shù)名要小寫(xiě)。 11.一些常量名要全部使用大寫(xiě)。比如在項(xiàng)目中的一些常量放在一個(gè)單獨(dú)的文件中,他們的名字應(yīng)該如下: 11.其他的建議1.避免在尾部添加空格。因?yàn)槲膊康目崭裢ǔ6伎床灰?jiàn),會(huì)產(chǎn)生混亂。比如,一個(gè)反斜杠后面跟一個(gè)空格的換行符,不算續(xù)行標(biāo)記。有些編輯器不會(huì)保留尾空格,并且很多項(xiàng)目(像 2.前面也有所提到,就是在二元運(yùn)算符兩邊都加一個(gè)空格。那么有哪些符號(hào)呢?
3.在使用運(yùn)算符的時(shí)候,有一個(gè)優(yōu)先級(jí)的問(wèn)題,我們需要在較低優(yōu)先級(jí)的運(yùn)算符兩邊添加空格(別指望提示,需要你自己判斷)??崭褡詈檬怯靡粋€(gè),而且前后數(shù)量相等。如下:
4.指定關(guān)鍵字參數(shù)或者默認(rèn)參數(shù)值的時(shí)候,不要在
|
|