點(diǎn)評(píng):企業(yè)的Python編碼規(guī)范基本上是參照PEP-8或谷歌開(kāi)源項(xiàng)目風(fēng)格指南來(lái)制定的,后者還提到了可以使用Lint工具來(lái)檢查代碼的規(guī)范程度,面試的時(shí)候遇到這類(lèi)問(wèn)題,可以先說(shuō)下這兩個(gè)參照標(biāo)準(zhǔn),然后挑重點(diǎn)說(shuō)一下Python編碼的注意事項(xiàng)。
1. 空格的使用 - 使用空格來(lái)表示縮進(jìn)而不要用制表符(Tab)。
- 和語(yǔ)法相關(guān)的每一層縮進(jìn)都用4個(gè)空格來(lái)表示。
- 每行的字符數(shù)不要超過(guò)79個(gè)字符,如果表達(dá)式因太長(zhǎng)而占據(jù)了多行,除了首行之外的其余各行都應(yīng)該在正常的縮進(jìn)寬度上再加上4個(gè)空格。
- 函數(shù)和類(lèi)的定義,代碼前后都要用兩個(gè)空行進(jìn)行分隔。
- 在同一個(gè)類(lèi)中,各個(gè)方法之間應(yīng)該用一個(gè)空行進(jìn)行分隔。
- 二元運(yùn)算符的左右兩側(cè)應(yīng)該保留一個(gè)空格,而且只要一個(gè)空格就好。
2. 標(biāo)識(shí)符命名
- 變量、函數(shù)和屬性應(yīng)該使用小寫(xiě)字母來(lái)拼寫(xiě),如果有多個(gè)單詞就使用下劃線進(jìn)行連接。
- 類(lèi)中受保護(hù)的實(shí)例屬性,應(yīng)該以一個(gè)下劃線開(kāi)頭。
- 類(lèi)中私有的實(shí)例屬性,應(yīng)該以?xún)蓚€(gè)下劃線開(kāi)頭。
- 類(lèi)和異常的命名,應(yīng)該每個(gè)單詞首字母大寫(xiě)。
- 模塊級(jí)別的常量,應(yīng)該采用全大寫(xiě)字母,如果有多個(gè)單詞就用下劃線進(jìn)行連接。
- 類(lèi)的實(shí)例方法,應(yīng)該把第一個(gè)參數(shù)命名為self以表示對(duì)象自身。
- 類(lèi)的類(lèi)方法,應(yīng)該把第一個(gè)參數(shù)命名為cls以表示該類(lèi)自身。
3. 表達(dá)式和語(yǔ)句
- 采用內(nèi)聯(lián)形式的否定詞,而不要把否定詞放在整個(gè)表達(dá)式的前面。例如:if a is not b就比if not a is b更容易讓人理解。
- 不要用檢查長(zhǎng)度的方式來(lái)判斷字符串、列表等是否為None或者沒(méi)有元素,應(yīng)該用if not x這樣的寫(xiě)法來(lái)檢查它。
- 就算if分支、for循環(huán)、except異常捕獲等中只有一行代碼,也不要將代碼和if、for、except等寫(xiě)在一起,分開(kāi)寫(xiě)才會(huì)讓代碼更清晰。
- import語(yǔ)句總是放在文件開(kāi)頭的地方。
- 引入模塊的時(shí)候,from math import sqrt比import math更好。
- 如果有多個(gè)import語(yǔ)句,應(yīng)該將其分為三部分,從上到下分別是Python標(biāo)準(zhǔn)模塊、第三方模塊和自定義模塊,每個(gè)部分內(nèi)部應(yīng)該按照模塊名稱(chēng)的字母表順序來(lái)排列。