首頁  >  文章  >  後端開發  >  Python程式設計規範

Python程式設計規範

高洛峰
高洛峰原創
2016-11-22 16:35:431042瀏覽

適當的空行有利於增加程式碼的可讀性,加空行可以參考以下幾個準則:

    1) 在類別、函數的定義間加空行;

    2) 在import 不同種類的模組間加空行;

    3) 在函數中的邏輯段落間加空行,即把相關的代碼緊湊寫在一起,作為一個邏輯段落,段落間以空行分隔;

>  斷行

儘管現在的寬螢幕顯示器已經可以單一螢幕顯示超過256 列字符,但本規範仍堅持行的最大長度不得超過80   個字符的標準。折疊長行的方法有以下幾種方法:

    1) 為長變量名換一個短名,如:

this.is.a.very.long.variable_name = this.is.another.long.variable_name

      應改為:

variable_name1 = this.is.a.very.long.variable_name
variable_name2 = this.is.another.variable_name
variable_name1 = variable_name2s

括號   2) 將圓號和中號 Python的行隱式的連結起來,你可以利用這個特點。如需要,你可以在表達式外圍增加一對額外的圓括號

    3) 在長行加入續行符強行斷行,斷行的位置應在運算符前,且換行後多一個縮進,以使維護人員看程式碼的時候看到程式碼行首即可判定這裡存在換行,如:

if color == WHITE or color == BLACK \
    or color == BLUE: # 注意 or 操作符在新行的行首而不是旧行的行尾
do_something(color);

>  字串

    1)  避免在循環中以+且+=運算子來累積字串。由於字串是不可變的,這樣做會創建不必要的臨時對象,並且導致二次方而不是線性的運行時間。作為替代方案,你可以將每個子字串加入列表,然後在循環結束後用 .join 連接列表。 (也可以將每個子字串寫入一個 cStringIO.StringIO 快取中)

    2)  為多行字串使用三重雙引號而非三重單引號。不過要注意, 通常用隱式行連接更清晰,因為多行字串與程式其他部分的縮排方式不一致。

>  命名

一致的命名可以給開發人員減少許多麻煩,而恰如其分的命名則可以大幅提高程式碼的可讀性,降低維護成本。

>>  常數

常數名所有字母大寫,由底線連接各個單字,如

WHITE = 0XFFFFFF
THIS_IS_A_CONSTANT = 1

>>  變數

變數名全部小寫,由下劃線連接各個條件,如同底線使用符號標識,多定義公開成員,少定義私有成員。

變數名稱不應帶有型別訊息,因為 Python 是動態型別語言。如 iValue、names_list、dict_obj 等都是不好的命名。

>>  函數

函數名的命名規則與變數名稱相同。

>>  類

對類別名稱使用大寫字母開頭的單字(如CapWords, 即Pascal風格),則不使用底線連接單字。如:

color = WHITE
this_is_a_variable = 1

>>  模組

模組名全部小寫,包內使用的模組,可以加上一條底線前綴,如

class ThisIsAClass(object):pass

>>  包

包的命名規範與模組相同。

>>  縮寫

命名應當盡量使用全拼寫的單詞,縮寫的情況有以下兩種:

    1) 常用的縮寫,如XML、ID等,在命名時也應隻大寫首字母,如

module.py_
internal_module.py

    2) 命名中含有長單字,對某個單字進行縮寫。此時應使用約定成俗的縮寫方式,如去除母音、包含子音的字首等方式,例如:

        function 縮寫為fn

     

        count 縮寫為cnt

        number 縮寫為num,以等。

>>  特定命名方式

主要是指 __xxx__ 形式的系統保留字命名法。專案中也可以使用這種命名,它的意義在於這種形式的變數是唯讀的,而這種形式的類別成員函數盡量不要重載。如

class XmlParser(object):pass

其中 __id__、__parent__ 和 __message__ 都採用了系統保留字命名法。

>>  導入格式

    1) import 的次序,先 import Python 內建模組,再 import 第三方模組,最後 import 自己開發的專案中的其它模組;這幾種模組用空行分隔開來。

    2) 每個import要獨佔一行。

    3) 不要使用 from module import *,除非是 import 常數定義模組或其它你確保不會出現命名空間衝突的模組。

>  賦值

對於賦值語言,主要是不要做無謂的對齊,如

a            = 1                               # 这是一个行注释
variable = 2                               # 另一个行注释
fn           = callback_function    # 还是行注释

没有必要做这种对齐,原因有两点:一是这种对齐会打乱编程时的注意力,大脑要同时处理两件事(编程和对齐);二是以后阅读和维护都很困难,因为人眼的横向视野很窄,把三个字段看成一行很困难,而且维护时要增加一个更长的变量名也会破坏对齐。直接这样写为佳:

a = 1 # 这是一个行注释
variable = 2 # 另一个行注释
fn = callback_function # 还是行注释

>  语句

通常每个语句应该独占一行。不过, 如果测试结果与测试语句在一行放得下, 你也可以将它们放在同一行。如果是if语句, 只有在没有else时才能这样做。特别地,绝不要对 try/except 这样做,因为try和except不能放在同一行。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn