Python編碼規範

2021-07-02 23:58:19 字數 4139 閱讀 5836

#!/usr/bin/python

應用程式要定義main函式而不要直接寫指令碼

def main():

dosomething()

if __name__ == "__main__":

main()

如果是全域性變數,則需要顯式加上"global"。

python 的注釋分為兩種的概念,一種是由 # 開頭的"真正的"注釋,另一種是 docstrings。前者表明為何選擇當前實現以及這種實現的原理和難點,後者表明如何使用這個包、模組、類、函式(方法),甚至包括使用示例和單元測試。

堅持適當注釋原則。對不存在技術難點的**堅持不注釋,對存在技術難點的**必須注釋。但與注釋不同,推薦對每乙個包、模組、類、函式(方法)寫 docstrings,除非**一目了然,非常簡單。

注釋塊通常應用於跟隨著一些(或者全部)**並和這些**有著相同的縮排層次。注釋塊中每行以'#'和乙個空格開始(除非他是注釋內的縮排文字)。注釋塊內的段落以僅含單個'#'的行分割。注釋塊上下方要有一空行包圍。

python **縮排為4個空格,在檔案結尾宣告

# modeline }}

空格在python **中是有意義的,因為python的語法依賴於縮排,在行首的空格稱為前導空格。在這一節不討論前導空格相關的內容,只討論非前導空格。非前導空格在 python **中沒有意義,但適當地加入非前導空格可以增進**的可讀性。

1)在二元算術、邏輯運算子前後加空格:如 a = b + c;

2)在一元字首運算子後不加空格,如 if !***: pass;

3)":"用在行尾時前後皆不加空格,如分支、迴圈、函式和類定義語言;用在非行尾時後端加空格,如 dict 物件的定義 d = 。

4)括號(含圓括號、方括號和花括號)前後不加空格,如 do_something(arg1, arg2),而不是 do_something( arg1, arg2 );

5)逗號後面加乙個空格,前面不加空格。

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

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

3)在函式中的邏輯段落間加空行,即把相關的**緊湊寫在一起,作為乙個邏輯段落,段落間以空行分隔。

行的最大長度不得超過 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_name2

2)在括號(包括圓括號、方括號和花括號)內換行,如:

class edit(cbase):

def __init__(self, parent, width,

font = font, color = black, pos = pos, style = 0):

或:

very_very_very_long_variable_name = edit(parent, \

width, \

font, \

color, \

pos)

2)在長行加入續行符強行斷行,斷行的位置應在操作符前,且換行後多乙個縮排,以使維護人員看**的時候看到**行首即可判定這裡存在換行,如:

if color == white or color == black \

or color == blue:

do_something(color);

常量常量名所有字母大寫,由下劃線連線各個單詞,如:

white = 0xffffff

this_is_a_constant = 1

變數

變數名全部小寫,由下劃線連線各個單詞,如:

color = white

this_is_a_variable = 1

不論是類成員變數還是全域性變數,均不使用m或g字首。私有類成員使用單一下劃線字首標識。

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

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

類類名單詞首字母大寫,不使用下劃線連線單詞,也不加入 c、t 等字首。如:

class thisisaclass(object):

pass

模組

模組名全部小寫,對於包內使用的模組,可以加乙個下劃線字首,如:

module.py

_internal_module.py

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

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

1)常用的縮寫,如 xml、id等,在命名時也應只大寫首字母,如

class xmlparser(object):pass

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

function 縮寫為 fn

text 縮寫為 txt

object 縮寫為 obj

count 縮寫為 cnt

number 縮寫為 num,等。

特定命名方式

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

class base(object):

def __init__(self, id, parent = none):

self.__id__ = id

self.__parent__ = parent

def __message__(self, msgid):

# ...略

其中 _id、parent_ 和 _message_ 都採用了系統保留字命名法。

語句import

import 語句有以下幾個原則需要遵守:

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

2)一條import語句import乙個模組。

3)當從模組中 import 多個物件且超過一行時,使用如下斷行法(此語法 py2.5 以上版本才支援):

from module import (obj1, obj2, obj3, obj4,

obj5, obj6)

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

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

a         = 1

variable = 2

fn = callback_function

應該寫成:

a = 1

variable = 2

fn = callback_function

分支和迴圈

不要寫成一行,如:

if !***: pass

for i in xrange(10): print i

應該寫成:

if !***:

pass

for i in xrange(10):

print i

其他建議

避免在記憶體中處理大物件,由於python申請的記憶體不一定會返還給作業系統(有時會返還給python記憶體池)

Python編碼規範

usr bin python 應用程式要定義main函式而不要直接寫指令碼 def main dosomething if name main main 如果是全域性變數,則需要顯式加上 global python 的注釋分為兩種的概念,一種是由 開頭的 真正的 注釋,另一種是 docstrings...

python編碼規範

pep8編碼標準 編寫 1,使用4個空格進行退進,不使用tab鍵,不允許tab和空格混用 2,每行最大長度79位元組,超過部分使用反斜槓折行 3,類和全域性函式定義間隔兩個空行,類內方法定義間隔乙個空行,類內方法定義間隔乙個空行,其他地方不加空行 文件編排 1.import 部分按標準,三方和自己編...

Python編碼規範

linux 平台上,乙個 python 原始碼檔案應該以下部分組成。windows 平台上,可以省略第一項。直譯器宣告 編碼格式宣告 模組注釋或文件字串 模組匯入 常量和全域性變數宣告 頂級定義 函式或類定義 執行 usr bin env python coding utf 8 通常這裡是關於本文件...