Python最簡編碼規(guī)范

0、前言

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、域名申請(qǐng)、虛擬空間、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

本文是閱讀《Python Coding Rule》之后總結(jié)的最為精華及簡單的編碼規(guī)范,根據(jù)每個(gè)人不同喜好有些地方會(huì)有不同的選擇,我只是做了對(duì)自己來說最簡單易行的選擇,僅供大家參考。

Python最簡編碼規(guī)范

1、重要原則

a.保持風(fēng)格的一致性很重要,但最重要的是:知道何時(shí)不一致

b.打破一條既定規(guī)則的兩個(gè)好理由:

c.當(dāng)應(yīng)用規(guī)則會(huì)導(dǎo)致代碼可讀性下降(可讀性賽高)

d.為了和周圍代碼保持一致而打破規(guī)則(歷史遺留)

2、最簡規(guī)范

a.只使用空格縮進(jìn)

b.使用UTF-8編碼

c.每行只寫一條語句

d.使用行末反斜杠折疊長行,限制每行最大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.每行長度限制在79字符內(nèi),使用行末反斜杠折疊長行

d.使用UTF-8編碼

e.每行只寫一條語句

Python最簡編碼規(guī)范

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)周圍不用空格。

模塊名:不含下劃線、簡短、全小寫;

類名、異常名:首字母大寫單詞串的駝峰法;

函數(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.

網(wǎng)頁題目:Python最簡編碼規(guī)范
網(wǎng)頁網(wǎng)址:http://bm7419.com/article42/gihdec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站Google、App設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站