許多小伙伴們?cè)谑褂镁哂写a分析的代碼編輯器寫 python 代碼的時(shí)候,有時(shí)候會(huì)遇到這種情況:明明代碼沒有錯(cuò)誤,也可以進(jìn)行代碼執(zhí)行,為什么代碼下面還畫著波浪線?其實(shí)是因?yàn)槟愕拇a不符合 PEP8 規(guī)范。雖然不符合該規(guī)范代碼也可以正常運(yùn)行(大多數(shù)情況可以正常運(yùn)行),但亂七八糟的代碼會(huì)是閱讀代碼的人難以理解代碼,所以為了小伙伴的同事關(guān)系融洽(不宜讀的代碼會(huì)增加別人的負(fù)擔(dān)),學(xué)習(xí) PEP8 規(guī)范很有必要。
首先介紹一下 PEP8,它是 Guido(python 之父)寫的 python 樣式指南文章改編而來(加入 Barry 的部分樣式指南)的編碼約定。詳細(xì)的 PEP8 文檔可以在官網(wǎng)找到。
接下來,小編挑出一些平常比較需要注意的規(guī)范進(jìn)行介紹:
縮進(jìn)
每一級(jí)縮進(jìn)使用4個(gè)空格(可以在代碼編輯 tab 制表符一次縮進(jìn)四個(gè)空格)。
續(xù)行
續(xù)行應(yīng)該與其包裹元素對(duì)齊。
可以使用圓括號(hào)、方括號(hào)和花括號(hào)內(nèi)的隱式行連接來垂直對(duì)齊,也可以使用掛行縮進(jìn)對(duì)齊。
注:在使用掛行縮進(jìn)時(shí),應(yīng)該考慮到第一行不應(yīng)該有參數(shù),以及使用縮進(jìn)以區(qū)分自己是續(xù)行。
行的最大長(zhǎng)度
所有行限制的最大字符數(shù)為79。超出最大字符數(shù)可以采用續(xù)行。
沒有結(jié)構(gòu)化限制的大塊文本(比如文檔字符或者注釋),每行的最大字符數(shù)限制在72。
空行
頂層函數(shù)和類的定義,前后使用兩個(gè)空行隔開。
類里的方法定義只需要用一個(gè)空行隔開。
導(dǎo)入
導(dǎo)入通常要分開進(jìn)行而且要位于文件的頂部。
注釋
塊注釋使用一個(gè) # 和一個(gè)空格加上注釋內(nèi)容構(gòu)成。塊注釋最好縮進(jìn)到與代碼相同的級(jí)別(盡管不縮進(jìn)也不會(huì)被代碼編輯器發(fā)現(xiàn))。
行內(nèi)注釋則是在塊注釋的要求上在 # 之前空兩個(gè)空格。
注;代碼編輯器不會(huì)關(guān)注你的注釋的質(zhì)量,但這并不代表你可以隨意注釋,垃圾的注釋不如沒有注釋。
命名約定
在命名的時(shí)候應(yīng)該避免一些不好區(qū)分的字母作為單字符變量名(比如小寫的 L 和大寫的 i,當(dāng)然,這點(diǎn)也不會(huì)被代碼編輯器發(fā)現(xiàn))。
類名一般使用首字母大寫,函數(shù)名應(yīng)該小寫,想提高可讀性可以用下劃線分隔
不要加分號(hào)
盡管在 python2.x 版本中可以使用分號(hào)來作為語句的結(jié)束標(biāo)識(shí),但實(shí)際上 python 還是通過換行來識(shí)別語句結(jié)束。所以分號(hào)不需要存在,也不要在一行里寫入多個(gè) python 語句(因?yàn)槭褂梅痔?hào)可以在一行內(nèi)寫入多個(gè)語句,但這是違背 PEP8 規(guī)范的)。
空格
按照標(biāo)準(zhǔn)的排版規(guī)范來使用標(biāo)點(diǎn)兩邊的空格,括號(hào)內(nèi)不要有空格。不要在逗號(hào),分號(hào),冒號(hào)前加空格,但應(yīng)該在他們后面加空格(行尾除外)。
參數(shù)列表, 索引或切片的左括號(hào)前不應(yīng)加空格。 在二元操作符兩邊都加上一個(gè)空格, 比如賦值(=), 比較(==, <, >, !=, <>, <=, >=, in, not in, is, is not)和布爾(and, or, not)。算術(shù)操作符兩邊的空格應(yīng)該保持一致。當(dāng)(=)用于指示關(guān)鍵字參數(shù)或默認(rèn)參數(shù)值時(shí), 不要在其兩側(cè)使用空格。
總結(jié)
PEP8 代碼規(guī)范雖然很多很復(fù)雜,但有些規(guī)則你多使用自然就能成為習(xí)慣。當(dāng)編寫的代碼符合規(guī)范時(shí),代碼的可閱讀性就大大提高了。另外,使用一款好的代碼編輯器可以幫助你發(fā)現(xiàn)不符合 PEP8 規(guī)范的地方,并給出相應(yīng)的提示(比如 pycharm)。
更多優(yōu)質(zhì) python 課程,盡在Python課程列表。