【轉】python變量命名規范


python源碼和其他一些書籍,命名各種個性,沒有一個比較統一的命名規范。於是總結了一些,供參考。

模塊名:

模塊應該使用盡可能短的、全小寫命名,可以在模塊命名時使用下划線以增強可讀性。同樣包的命名也應該是這樣的,雖然其並不鼓勵下划線。

主要是考慮模塊名是與文件夾相對應的,因此需要考慮文件系統的一些命名規則的,比如Unix系統對大小寫敏感,而過長的文件名會影響其在Windows\Mac\Dos等系統中的正常使用。

通常是小寫字母,單詞之間用_分割

ad_stats.py

包名:

和模塊名一樣

類名:

幾乎毫無例外的,類名都使用首字母大寫開頭(Pascal命名風格)的規范。使用_單下划線開頭的類名為內部使用,from M import *默認不被導入的情況。

單詞首字母大寫

AdStats

ConfigUtil

全局變量名(類變量,在java中相當於static變量):

大寫字母,單詞之間用_分割

NUMBER

COLOR_WRITE

對於from M import *導入語句,如果想阻止導入模塊內的全局變量可以使用舊有的規范,在全局變量上加一個前導的下划線。

*注意*:應避免使用全局變量

普通變量:

小寫字母,單詞之間用_分割

this_is_a_var

*注意*:

1.不論是類成員變量還是全局變量,均不使用 m 或 g 前綴。

2.私有類成員使用單一下划線前綴標識,多定義公開成員,少定義私有成員。

3.變量名不應帶有類型信息,因為Python是動態類型語言。如 iValue、names_list、dict_obj 等都是不好的命名。

實例變量:

以_開頭,其他和普通變量一樣

_price

_instance_var

私有實例變量(外部訪問會報錯):

以__開頭(2個下划線),其他和普通變量一樣

__private_var

專有變量:

__開頭,__結尾,一般為python的自有變量,不要以這種方式命名

__doc__

__class__

普通函數:

和普通變量一樣:

get_name()

count_number()

ad_stat()

私有函數(外部訪問會報錯):

以__開頭(2個下划線),其他和普通函數一樣

__get_name()

文件名:

全小寫,可使用下划線

*注意*:混合大小寫僅被允許用於這種風格已經占據優勢的時候,以便保持向后兼容。

函數和方法的參數:

總使用“self”作為實例方法的第一個參數。總使用“cls”作為類方法的第一個參數。

如果一個函數的參數名稱和保留的關鍵字沖突,通常使用一個后綴下划線好於使用縮寫或奇怪的拼寫。

常量:

常量名所有字母大寫,由下划線連接各個單詞如MAX_OVERFLOW,TOTAL。

異常

因為異常也是一個類,所以遵守類的命名規則。此外,如果異常實際上指代一個錯誤的話,應該使用“Error”做后綴。

縮寫

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

1.常用的縮寫,如XML、ID等,在命名時也應只大寫首字母,如XmlParser。

2.命名中含有長單詞,對某個單詞進行縮寫。這時應使用約定成俗的縮寫方式。

例如:

function 縮寫為 fn

text 縮寫為 txt

object 縮寫為 obj

count 縮寫為 cnt

number 縮寫為 num,等。

前導后綴下划線總結

一個前導下划線:表示非公有。

一個后綴下划線:避免關鍵字沖突。

兩個前導下划線:當命名一個類屬性引起名稱沖突時使用。

兩個前導和后綴下划線:“魔術”(有特殊用途)對象或者屬性,例如__init__或者__file__。絕對不要創造這樣的名字,而只是使用它們。

*注意*:關於下划線的使用存在一些爭議。

Python 用下划線作為變量前綴和后綴指定特殊變量。

_xxx 不能用'from module import *'導入(相當於 private)

__xxx__ 系統定義名字

__xxx 類中的私有變量名(相當於protect)

核心風格:避免用下划線作為變量名的開始。

因為下划線對解釋器有特殊的意義,而且是內建標識符所使用的符號,我們建議程序員避免用下划線作為變量名的開始。一般來講,變量名_xxx被看作是“私有的”,在模塊或類外不可以使用。當變量是私有的時候,用_xxx 來表示變量是很好的習慣。"單下划線" 開始的成員變量叫做保護變量,意思是只有類對象和子類對象自己能訪問到這些變量;

"雙下划線" 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。

以單下划線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“from xxx import *”而導入;以雙下划線開頭的(__foo)代表類的私有成員;以雙下划線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如__init__()代表類的構造函數。

特定命名方式

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

class Base(object):

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

self.__id__ = id

self.__parent__ = parent

def __message__(self, msgid):

# …略
其中 __id__、__parent__ 和 __message__ 都采用了系統保留字命名法。

__雙下划線開頭雙下划線結尾__:指那些包含在用戶無法控制的命名空間中的“魔術”對象或屬性,如類成員的__name__、__doc__、__init__、__import__、__file__、等。推薦永遠不要將這樣的命名方式應用於自己的變量或函數。

單下划線結尾_:只是為了避免與python關鍵字的命名沖突

_單下划線開頭:弱“內部使用”標識,如:”from M import *”,將不導入所有以下划線開頭的對象,包括包、模塊、成員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM