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