溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么寫出清晰又優(yōu)雅的Python代碼

發(fā)布時間:2021-10-09 15:43:58 來源:億速云 閱讀:121 作者:柒染 欄目:編程語言

本篇文章為大家展示了怎么寫出清晰又優(yōu)雅的Python代碼,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

個人認(rèn)為,下面這幾條規(guī)則是絕對應(yīng)該遵循的。

01 與空白有關(guān)的建議

在Python中,空白(whitespace)在語法上相當(dāng)重要。Python程序員對空白字符的用法尤其在意,因為它們會影響代碼的清晰程度。在這方面,大家應(yīng)該遵循以下幾條建議。

用空格(space)表示縮進(jìn),而不要用制表符(tab)。

和語法相關(guān)的每一層縮進(jìn)都用4個空格表示。

每行不超過79個字符。

對于占據(jù)多行的長表達(dá)式來說,除了首行之外的其余各行都應(yīng)該在通常的縮進(jìn)級別之上再加4個空格。

在同一份文件中,函數(shù)與類之間用兩個空行隔開。

在同一個類中,方法與方法之間用一個空行隔開。

使用字典時,鍵與冒號之間不加空格,寫在同一行的冒號和值之間應(yīng)該加一個空格。

給變量賦值時,賦值符號的左邊和右邊各加一個空格,并且只加一個空格就好。

給變量的類型做注解(annotation)時,不要把變量名和冒號隔開,但在類型信息前應(yīng)該有一個空格。

02 與命名有關(guān)的建議


PEP  8建議采用不同的方式來給Python代碼中的各個部分命名,這樣在閱讀代碼時,就可以根據(jù)這些名稱看出它們在Python語言中的角色。遵循以下與命名相關(guān)的建議。

函數(shù)、變量及屬性用小寫字母來拼寫,各單詞之間用下劃線相連,例如:lowercase_underscore。

受保護(hù)的實例屬性,用一個下劃線開頭,例如:_leading_underscore。

私有的實例屬性,用兩個下劃線開頭,例如:__double_leading_underscore。

類(包括異常)命名時,每個單詞的首字母均大寫,例如:CapitalizedWord。

模塊級別的常量,所有字母都大寫,各單詞之間用下劃線相連,例如:ALL_CAPS。

類中的實例方法,應(yīng)該把第一個參數(shù)命名為self,用來表示該對象本身。

類方法的第一個參數(shù),應(yīng)該命名為cls,用來表示這個類本身。

03 與表達(dá)式和語句有關(guān)的建議


The Zen of Python中提到:“每件事都應(yīng)該有簡單的做法,而且最好只有一種。”PEP 8就試著運用這個理念,來規(guī)范表達(dá)式和語句的寫法。

采用行內(nèi)否定,即把否定詞直接寫在要否定的內(nèi)容前面,而不要放在整個表達(dá)式的前面,例如應(yīng)該寫if a is not b,而不是if not a is  b。

不要通過長度判斷容器或序列是不是空的,例如不要通過if len(somelist) == 0判斷somelist是否為[]或''等空值,而是應(yīng)該采用if  not somelist這樣的寫法來判斷,因為Python會把空值自動評估為False。

如果要判斷容器或序列里面有沒有內(nèi)容(比如要判斷somelist是否為[1]或'hi'這樣非空的值),也不應(yīng)該通過長度來判斷,而是應(yīng)該采用if  somelist語句,因為Python會把非空的值自動判定為True。

不要把if語句、for循環(huán)、while循環(huán)及except復(fù)合語句擠在一行。應(yīng)該把這些語句分成多行來寫,這樣更加清晰。

如果表達(dá)式一行寫不下,可以用括號將其括起來,而且要適當(dāng)?shù)靥砑訐Q行與縮進(jìn)以便于閱讀。

多行的表達(dá)式,應(yīng)該用括號括起來,而不要用\符號續(xù)行。

04 與引入有關(guān)的建議

PEP 8對于怎樣在代碼中引入并使用模塊,給出了下面幾條建議。

import語句(含from x import y)總是應(yīng)該放在文件開頭。

引入模塊時,總是應(yīng)該使用絕對名稱,而不應(yīng)該根據(jù)當(dāng)前模塊路徑來使用相對名稱。例如,要引入bar包中的foo模塊,應(yīng)該完整地寫出from bar import  foo,即便當(dāng)前路徑為bar包里,也不應(yīng)該簡寫為import foo。

如果一定要用相對名稱來編寫import語句,那就應(yīng)該明確地寫成:from . import foo。

文件中的import語句應(yīng)該按順序劃分成三個部分:首先引入標(biāo)準(zhǔn)庫里的模塊,然后引入第三方模塊,最后引入自己的模塊。屬于同一個部分的import語句按字母順序排列。

提示:Pylint是一款流行的Python源碼靜態(tài)分析工具。它可以自動檢查受測代碼是否符合PEP  8風(fēng)格指南,而且還能找出Python程序里的許多種常見錯誤。很多IDE(集合成開發(fā)環(huán)境)與編輯器,都包含這樣的linting工具或者支持類似的插件。

要點

編寫Python代碼時,總是應(yīng)該遵循PEP 8風(fēng)格指南。

與廣大Python開發(fā)者采用同一套代碼風(fēng)格,可以使項目更利于多人協(xié)作。

采用一致的風(fēng)格編寫代碼,代碼的后續(xù)修改更容易。

上述內(nèi)容就是怎么寫出清晰又優(yōu)雅的Python代碼,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI