【轉】python變數命名規範

來源:互聯網
上載者:User

標籤:建議   訪問   之間   imp   pascal   單詞   class   write   異常   

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 *”,將不匯入所有以底線開頭的對象,包括包、模組、成員

【轉】python變數命名規範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.