Python中的標識符是由用戶定義的名稱,用來指定變量名稱、函數名稱、類名稱,模塊等名稱。
1、標識符的命名規則
(1)不能使用Python的保留字(關鍵字)來命名標識符;
(2)Python標識符合法的字符包括:26個大小寫字母[a-z,A-Z],10個阿拉伯數字[0-9]及下劃線;
(3)標識符不能以數字開頭;
(4)標識符開始字符可以是大小寫字母或下劃線;
(5)Python中標識符的長度沒有限制;
(6)Python標識符是大小寫敏感的(即字母大小寫代表不同的標識符)。
2、一些符合要求的標識符示例
name1 有字母和數字構成,且開頭字符是字母;
student_age 有字母和下劃線構成;
_income 有下劃線開始
為了增強程序的可讀性,特別是比較長或大型程序中,在命名標識符時,最好能見名知義,否則時間久了,連自己都不知道代表什么意思,當然,寫注釋也是幫助理解程序的一種很好的做法。
3、一些不合法的標識符示例:
100 不允許只有數字構成;
3year 標識符不能以數字開頭
a-b 標識符中包含不合法的字符(-)
for 標識符是Python中的關鍵字
teacher and student 標識符包含非法的字符-空格或空白
3、標識符有效性檢驗
在Python中,可以使用 isidentifier() 函數來檢驗一個標識符是否是合法的。但是,這個函數不會忽略Python中的關鍵字。即,你準備使用Python中的關鍵字來命名自己的標識符的話,這個函數也會認為是有效的,畢竟,Python中的關鍵字也是標識符,只不過是Python中保留下來用于構建自己的語法組成。
但是,我們可以借助另外一個函數 keyword.iskeyword() 來判斷一個標識符是不是關鍵字,使用這兩個函數就可以完全來檢驗自己定義的標識符是不是有效的了。
具體操作代碼:
print("name1".isidentifier()) #True
print("100".isidentifier()) #False
print("_income".isidentifier()) #True
print("3year".isidentifier()) #False
print("a-b".isidentifier()) #False
print("for".isidentifier()) #True
最后一個,for被判定為True,但它是Python的關鍵字,我們不能使用它來命名自己的標識符。
可以使用下面的程序先來判斷一下要使用的標識符是不是關鍵字,如果不是的話,再進一步使用上面的函數來判斷是不是有效的標識符即可。
import keyword
print(keyword.iskeyword("for")) # True
上面輸出的為True,則for為關鍵字,你就不能使用它作為自己的標識符了。
上面在Python3.8.3Shell中運行的情況如下圖所示:
如果有需要的話,可以定義一個函數來實現相關的功能:
def isValidIdentifier(str):
return str.isidentifier() and not keyword.iskeyword(str)
print(isValidIdentifier("for")) # False
5、Python標識符命名最佳實踐
(1)類名最好以大寫字母開始,如Student,Teacher,Employee,等。
(2)如果類名有多個單詞構成,則每個單詞的開頭字母都要大寫,如StudentClass, FileHelper等。
(3)變量的名稱、函數的名稱、模塊的名稱,要使用小寫字母來命名,如 age, say(),等。
(4)如果變量、函數名稱、模塊名稱由多個單詞構成,則單詞與單詞間使用下劃線進行分隔:如:student_name, print_score()等。
(5)如果變量被定義為私有變量,則命名可以使用下劃線作為開始字符;
(6)避免命名標識符時,開頭字符和結尾字符都是下劃線,因為這種標識符是Python的內置類型;
(7)避免標識符的開頭和結尾同時有兩個下劃線,這是因為這種命名方式是Python語言定義的特殊名稱;
(8)盡量使標識符的命名有意義,見名知義是最好的方法,如 student_name要比sn好很多;
(9)如果一個函數返回一個布爾類型的結果,則最好在給函數命名時以"is"開頭,如:isfineshed,isateacher等。
(10)雖然在Python中,標識符的長度沒有限制,但最好是使其盡可能的短,如 stu_first_name要比the_student_entity_fist_name好很多。
新聞熱點
疑難解答