一,包名、模組名、局部變數名、函數名
全小寫+底線式駝峰
example:this_is_var
二,全域變數
全大寫+底線式駝峰
example:GLOBAL_VAR
三,類名
首字母大寫式駝峰
example:ClassName()
四,關於底線
以單底線開頭,是弱內部使用標識,from M import * 時,將不會匯入該對象(python 一切皆對象)。
以雙底線開頭的變數名,主要用於類內部標識類私人,不能直接存取。模組中使用見上一條。
雙底線開頭且雙底線截尾的命名方法盡量不要用,這是標識
example for 1:
module_1 模組中定義變數 var_1, _var_2, __var_3
#module_1
var_1
_var_2
__var_3
module_2 模組中代碼如下:
#module_2_error ''' 以底線開頭的變數不會別匯入 ''' from module_1 import * print var_1 print _var_2 #將報錯 print __var_3 #將報錯
執行到第6,7行將會報錯,因為凡是以底線開頭的對象都不會被匯入。
既然是弱內部使用標識,就還是有使用辦法的,只需單獨匯入即可:
#module_2_solution from module_1 import * # 匯入所有的不是底線開頭的對象 from module_1 import _var_2, __var_3 # 顯式匯入底線開頭的對象 print var_1 print _var_2 # 不會報錯 print __var_3 # 不會報錯
example for 2:
#module_error ''' 雙底線開頭的變數不能被直接存取 ''' class MyClass(): def __init__(self): self.var_1 = 1 self._var_2 = 2 self.__var_3 = 3 if __name__=="__main__": obj = MyClass() print obj.var_1 print obj._var_2 print obj.__var_3 # 這裡將會出錯
需要定義函數來擷取雙底線開頭的變數
#module_solution '''需要定義函數來擷取雙底線開頭的變數''' class MyClass(): def __init__(self): self.var_1 = 1 self._var_2 = 2 self.__var_3 = 3 def get_var_3(self): return self.__var_3 if __name__=="__main__": obj = MyClass() print obj.var_1 print obj._var_2 print obj.get_var_3() # 不會再報錯
四,其他要注意的
不要像c等語言裡面一樣去用開頭字母標識變數類型(如 iValue),因為python在解釋的時候才確定類型。
因為異常也是一個類,所以遵守類的命名規則。此外,如果異常實際上指代一個錯誤的話,應該使用“Error”做尾碼。
命名應當盡量使用全拼字的單詞,縮寫的情況有如下兩種:常用的縮寫,如XML、ID等,在命名時也應只大寫首字母,如XmlParser。命名中含有長單詞,對某個單詞進行縮寫。這時應使用約定成俗的縮寫方式。例如:function 縮寫為 fn, text 縮寫為 txt, object 縮寫為 obj, count 縮寫為 cnt, number 縮寫為 num 等。
類執行個體方法第一個參數使用self, 類方法第一個參數使用cls