0、前言
本文是閱讀《Python Coding Rule》之后總結(jié)的最為精華及簡(jiǎn)單的編碼規(guī)范,根據(jù)每個(gè)人不同喜好有些地方會(huì)有不同的選擇,我只是做了對(duì)自己來說最簡(jiǎn)單易行的選擇,僅供大家參考。
1、重要原則
a.保持風(fēng)格的一致性很重要,但最重要的是:知道何時(shí)不一致b.打破一條既定規(guī)則的兩個(gè)好理由:c.當(dāng)應(yīng)用規(guī)則會(huì)導(dǎo)致代碼可讀性下降(可讀性賽高)d.為了和周圍代碼保持一致而打破規(guī)則(歷史遺留)
2、最簡(jiǎn)規(guī)范
a.只使用空格縮進(jìn)b.使用UTF-8編碼c.每行只寫一條語句d.使用行末反斜杠折疊長(zhǎng)行,限制每行最大79字符e.導(dǎo)入包:每行唯一、從大到小、絕對(duì)路徑f.類內(nèi)方法空1行分隔,類外空2行分隔g.運(yùn)算符除 * 外,兩邊空1格分隔,函數(shù)參數(shù)=周圍不用空格h.除類名使用駝峰法以外,其他模塊、函數(shù)、方法、變量均使用全小寫+下劃線i.1個(gè)前導(dǎo)下劃線表示半公開,2個(gè)前導(dǎo)下劃線表示私有,與保留字區(qū)分使用單個(gè)后置下劃線j.開發(fā)時(shí)使用中文注釋,發(fā)布時(shí)再寫英文文檔
3、詳細(xì)規(guī)范
a.全文通用b.只使用空格縮進(jìn),4個(gè)空格表示1個(gè)縮進(jìn)層次c.每行長(zhǎng)度限制在79字符內(nèi),使用行末反斜杠折疊長(zhǎng)行d.使用UTF-8編碼e.每行只寫一條語句
4、代碼命名
一行只import一個(gè)包,Imports的順序?yàn)椋簶?biāo)準(zhǔn)庫、相關(guān)主包、特定應(yīng)用,每組導(dǎo)入之間放置1行空行,所有導(dǎo)入使用包的絕對(duì)路徑。
分割頂層函數(shù)和類的定義使用2行空行,分割類內(nèi)方法定義使用1行空行,class行與第一個(gè)方法定義之間要有1行空行。
整體使用英文書寫方式來使用空格,即僅在逗號(hào)、分號(hào)后面添加1個(gè)空格,其他任何符號(hào)如圓括號(hào)、方括號(hào)、花括號(hào)等都不用空格把符號(hào)與字符分開,寫在一起表示一個(gè)整體;運(yùn)算符除 * 號(hào)以外,其他符號(hào)兩邊都各用1個(gè)空格分隔;函數(shù)參數(shù)=號(hào)周圍不用空格。
模塊名:不含下劃線、簡(jiǎn)短、全小寫;
類名、異常名:首字母大寫單詞串的駝峰法;
函數(shù)名、全局變量名、方法名、實(shí)例變量:全小寫,加下劃線增加可讀性;
一個(gè)前導(dǎo)下劃線僅用于不想被導(dǎo)入的全局變量(還有內(nèi)部函數(shù)和類)前加一個(gè)下劃線)、不打算作為類的公共接口的內(nèi)部方法和實(shí)例變量;
兩個(gè)前導(dǎo)下劃線以表示類私有的名字,只用來避免與類(為可以子類化所設(shè)計(jì))中的屬性發(fā)生名字沖突。
私有屬性必須有兩個(gè)前導(dǎo)下劃線,無后置下劃線;
非公有屬性必須有一個(gè)前導(dǎo)下劃線,無后置下劃線。
公共屬性沒有前導(dǎo)和后置下劃線,除非它們與保留字沖突,此情況下,單個(gè)后置下劃線比前置或混亂的拼寫要好,例如:class_優(yōu)于klass。
5、編寫技巧
與None之類的單值比較,永遠(yuǎn)用:'is'或'is not'來做:if x is not None
在模塊和包內(nèi)定義基異常類(base exception class)
使用字符串方法(methods)代替字符串模塊。
在檢查前綴或后綴時(shí)避免對(duì)字符串進(jìn)行切片,用startswith()和endswith()代替,如:No: if foo[:3] == 'bar':Yes: if foo.startswith('bar'):
只用isinstance()進(jìn)行對(duì)象類型的比較,如:No: if type(obj) is type(1):Yes: if isinstance(obj, int)
判斷True或False不要用 ==,如:No: if greeting == True:Yes: if greeting:
6、注釋
開發(fā)時(shí),注釋全部用中文來寫,當(dāng)要發(fā)布腳本工具時(shí),再寫英文文檔。
注釋應(yīng)該是是完整的句子(短語也可),首字母大寫;如果注釋很短,省略末尾句號(hào);注釋塊由一個(gè)or多個(gè)完整句子構(gòu)成的段落組成,則每個(gè)句子使用句子結(jié)尾;句末句號(hào)后使用兩個(gè)空格。
注釋塊每行以#和一個(gè)空格開始,并且跟隨注釋的代碼具有相同的縮進(jìn)層次,注釋塊上下方有一空行包圍。
謹(jǐn)慎使用行內(nèi)注釋,至少使用兩個(gè)空格與語句分開。
使用 pydoc; epydoc; Doxgen 等文檔化工具,為所有公共模塊、函數(shù)、類和方法邊寫文檔字符串,文檔字符串對(duì)非公開的方法不是必要的,但你應(yīng)該有一個(gè)描述這個(gè)方法做什么的注釋,這個(gè)注釋應(yīng)該在"def"這行后。
多行文檔字符串結(jié)尾的""" 應(yīng)該單獨(dú)成行。
版本注記:定義一個(gè)變量__version__ = "$Revision: 1.4 $"
Stay hungry. Stay foolish.
-
編碼
+關(guān)注
關(guān)注
6文章
932瀏覽量
54731 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315 -
python
+關(guān)注
關(guān)注
55文章
4768瀏覽量
84376
原文標(biāo)題:Python最簡(jiǎn)編碼規(guī)范
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論