Python 標識符
參見:https://docs.python.org/3/reference/lexical_analysis.html?highlight=identifier#identifiers
在python里,標識符有字母、數字、下划線組成,並且不能使用Python中的保留字。
在python中,所有標識符可以包括英文、數字以及下划線(_),但不能以數字開頭。
python中的標識符是區分大小寫的。
以下划線開頭的標識符是有特殊意義的。以單下划線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用"from xxx import *"而導入;
以雙下划線開頭的(__foo)代表類的私有成員;以雙下划線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如__init__()代表類的構造函數。
Python保留字符
下面的列表顯示了在Python中的保留字。這些保留字不能用作常數或變數,或任何其他標識符名稱。
首先在命令行先看一下Python有哪些保留字。
1 import keyword 2 keyword.kwlist
輸出:['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
保留字 | 說明 | 保留字 | 說明 |
False | The false value of the bool type。內置常量 bool類型false |
global |
定義全局變量 |
None | 內置常量表示沒有 | if | 條件語句,與else、elif結合使用 |
True | The true value of the bool type。內置常量bool類型true | import | 用於導入模塊,與from結合使用 |
and | 用於表達式運算,邏輯與操作 | in | 判斷變量是否在序列中 |
as | 用於類型轉換 | is | 判斷變量是否為某個類的實例 |
assert | 斷言,用於判斷變量或者條件表達式的值是否為真 | lambda | 定義匿名行數 |
break | 中斷循環語句的執行 | nonlocal | 用來在函數或其他作用域中使用外層(非全局)變量 |
class | 用於定義類 | not | 表達式運算,邏輯非操作 |
continue | 結束本次循環繼續下一次循環 | or | 表達式運算,邏輯或操作 |
def | 定義函數或方法 | pass | 空的類、方法或者函數的占位符 |
elif | 條件控制語句,與if、else結合使用 | raise | 異常拋操作 |
esle | 條件控制語句,與if、elif結合使用 | return | 從函數返回計算結果 |
except | except包含異常捕獲后的操作代碼塊與try、finally結合使用 | try | 包含可能會出現的代碼塊,與except、finally結合使用 |
finally | 用於異常語句,異常捕獲后,始終要執行finally包含的代碼塊,與try、except結合使用 | while | while循環 |
for | for循環語句 | with | 簡化Python的語句 |
from | 用於導入模塊,與import結合使用 | yield | 從函數依次返回值 |
參見:https://www.python.org/dev/peps/pep-0008/
盡量避免使用難區分的字母"l"、"o"數字"1"、"0"。
1.變量名、包名、模塊名
變量名通常由字母、數字、下划線組成,以字母或下划線開頭,包名、模塊名通常采用簡短的小寫字母,提高可讀性模塊名中也可以包含下划線,包命中不推薦使用下划線。
#Filename:rulemodle.py _rule = "rule information"
第一行是程序注釋行,用於聲明模塊的名稱,模塊名用小寫字母,也可以不指定模塊名稱,以.py后綴的文件就是一個模塊,文件名就是模塊名。
2.類名、對象名
類名首字母大寫,其他字母采用小寫。對象名用小寫字母。內部使用的類在類名前加單下划線。
類的屬性和方法名以對象作為前綴,對象通過操作符"."訪問屬性和方法。類的私有變量和私有方法以兩個下划線作為前綴。
class Student: #類名,首字母大寫 __name = '' #私有變量,以__開頭 def __init__(self,name): #self相當於java中的this self.__name = name def getName(self): return self.__name if __name__ =="__main__": student = Student("zhaowei") #對象名,小寫字母 print(student.getName())
3.函數名
函數名通常采用小寫,必要時使用下划線區分單詞以提高可讀性。
mixedCase(首字母小寫,后面以單詞首字母大寫分割單詞)只適用於保持風格以及向下兼容。
導入的函數以模塊名作為前綴。
import random #導入模塊 def compareNum(num1,num2): #定義函數 if(num1 > num2): print("num1 : %d > num2 : %d"%(num1,num2)) elif(num1 == num2): print("num1 : %d == num2 : %d"%(num1,num2)) else: print("num1 : %d < num2 : %d"%(num1,num2)) num1 = random.randrange(1,9) #調用模塊的函數 num2 = random.randrange(1,9) compareNum(num1,num2)
4.異常名
因為異常也是類,所以類的命名習慣在這里也適用。不同的是,如果異常實際上是個錯誤,則需要在異常名字的后面使用Error后綴
5.全局變量名
全局變量名
我們假設這些變量都是在模塊內部使用的。命名所遵循的規則跟函數的命名規則基本相同。