1. 有效的Python標識符規則:
(1)長度任意長;
(2)標識符不能與關鍵字同名;
(3)在2.x版本的Python中,標識符以ASCII的字母或下劃線開始,後面能夠接字母、數字、下劃線;
在3.x的Python中,標識符ASCII字母、下劃線以及大多數非英文語言的字母,只要是Unicode編碼的字母均可以充當引導字符,後續字符能夠是任意引導符,或任意非空格字符,包括Unicode編碼中認爲是數字的任意字符。(所以可使用阿拉伯語、中文、日語或俄語字符或Unicode字符集支持的任意其餘語言中的字符進行命名)
2. 約定:
(1)不要使用Python預約義的標識符名,所以要避免使用NotImplemented與Eliiipsis等名字,這些在將來有可能被Python的新版本使用到;
(2)不要使用Python內置函數名或內置數據類型或異常名做爲標識符名;
(3)關於下劃線的約定,名字的開頭和結尾都使用下劃線的狀況應該避免,由於Python中大量採用這種名字定義了各類特殊方法和變量;在有些狀況,以一個或兩個下劃線引導的名稱,可是沒有使用兩個下劃線結尾的應該特殊對待。
3.Python專用下劃線標識符
首先,建議儘可能避免使用下劃線做爲標識符的開始
(1)單下劃線開頭的變量名
模塊級私有,這個被經常使用於模塊中,
在一個模塊中以單下劃線開頭的變量和函數被默認看成內部函數,
若是使用 from a_module import * 導入時,這部分變量和函數不會被導入,除非除非模塊或包中的「__all__」列表顯式地包含了它們。不過值得注意的是,若是使用 import a_module 這樣導入模塊,仍然能夠用 a_module._some_var 這樣的形式訪問到這樣的對象。
在類中,「單下劃線」 開始的成員變量叫作保護變量,意思是
只有類對象和子類對象本身能訪問到這些變量;
使用單下劃線私有變量,是程序員的一個很好的習慣
(2)雙下劃線開頭的變量名(不是以雙下劃線結尾)
類的私有成員,意思是隻有類對象本身能訪問,連子類對象也不能訪問到這個數據。
即若是有一 Test 類裏有一成員 __x,那麼 dir(Test) 時會看到 _Test__x 而非 __x。這是爲了不該成員的名稱與子類中的名稱衝突。但要注意這要求該名稱末尾沒有下劃線。python
(3)雙下劃線開頭,雙下劃線結尾的變量名程序員
python裏特殊方法專用的標識,如 __init__()表明類的構造函數。函數
(4)單下劃線_(瞭解便可)
一般狀況下,會在如下3種場景中使用:編碼
a) 在解釋器中:在這種狀況下,「_」表明交互式解釋器會話中上一條執行的語句的結果。spa
b)做爲一個名稱: 「_」做爲臨時性的名稱使用。這樣,當其餘人閱讀你的代碼時將會知道,你分配了一個特定的名稱,可是並不會在後面再次用到該名稱。例如,下面的例子中,你可能對循環計數中的實際值並不感興趣,此時就可使用「_」;翻譯
c)國際化:也許你也曾看到」_「會被做爲一個函數來使用。這種狀況下,它一般用於實現國際化和本地化字符串之間翻譯查找的函數名稱,這彷佛源自並遵循相應的C約定。code