Python識別符號命名最佳實踐

大家好,今天我們將繼續學習Python的基礎知識。這篇文章將重點介紹Python中識別符號的相關內容。

什麼是識別符號

在Python中,識別符號是用來區別開每個物件的物件名稱。識別符號由使用者定義,主要用來給變數(Varible)、函式(Function)、類(Class),模組(Module)等命名。

Python識別符號命名最佳實踐

Python識別符號最佳實踐

Python識別符號的命名規則

每種語言都有自己識別符號的命名規則,這些規則基本都大同小異。Python的識別符號命名規則主要包括:

標識符合法的字元:26個英文字母(包括大小寫a-z,A-Z)、10個阿拉伯數字(0-9)以及下劃線(_);

識別符號的第一個字元只能是字母或下劃線,不能以數字開始;

Python識別符號的長度沒有限制;

使用者定義的識別符號不能是Python的保留字或關鍵字,如for,if等;

Python是字母大小寫敏感的語言,如Abc、abc、ABc是不同的識別符號。

Python識別符號命名最佳實踐

下面分別使用一些例子來說明什麼是合法有效的Python識別符號以及什麼樣的識別符號是不合法的。

合法的識別符號舉例

name1:這個識別符號是由字母和數字構成的,且開頭字元是英文字母,所以其是合法有效的識別符號;

student_age:這個識別符號是由字母和下劃線構成的,也是合法有效的識別符號;

_income:該識別符號以下劃線開始,且有效字元滿足上面的要求,因此這也是合法的識別符號。

在實踐中,為了增強Python程式的可讀性,我們在給識別符號命名時,儘量做到見名知義。否則,隨著時間的流逝,在沒有註釋幫助下,讀者很可能就不知道識別符號的具體含義了。

Python識別符號命名最佳實踐

不合法的識別符號舉例

為了更好地理解Python識別符號的命名規則,下面給出一些不合法的識別符號:

100:這個識別符號只有數字構成,違反了開頭字元不能是數字的法則;

3year:這個識別符號也是違反了不能以數字開頭的約定;

a-b:這個識別符號中包含不合法的字元(-);

for:這個識別符號是Python中的關鍵字,這是不允許的;

teacher and student:這個識別符號包含非法的字元——空格或空白字元。

對於一個新手來說,可能判斷一個識別符號是否有效,可能存在一定的困難。幸運的是,Python中給出了識別符號有效性檢驗的函式,來判斷一個識別符號是否是有效的識別符號。

Python識別符號命名最佳實踐

判斷一個識別符號是否是有效

對於新使用者來講,Python提供了 isidentifier() 函式來判斷一個識別符號是否是有效合法的識別符號。

但是,這個函式不會忽略Python中的保留字或關鍵字。因為,這些關鍵字或保留字也是Python的識別符號,不過其用來構成了Python的語法字,使用者不能再使用它作為自己的識別符號了。

那問題就來了,如果你準備使用Python中的關鍵字來作為自己的識別符號的話,isidentifier()函式也會認為是有效的。這豈不是給新使用者帶來了困惑。

Python識別符號命名最佳實踐

遇到問題,我們總要解決問題的。Python還提供了另外一個函式,幫助我們來識別一個識別符號是不是Python中的關鍵字,這個函式就是 keyword。iskeyword(),從名字上就知道它的含義了吧。藉助isidentifier()和keyword。iskeyword()這兩個函式就可以完全來驗證自己定義的識別符號是不是有效和合法的了。

下面首先看一下isidentifier()函式的使用方法。

Python識別符號命名最佳實踐

下面程式碼檢測了上面有效和無效的識別符號:

print(“name1”。isidentifier()) #Trueprint(“100”。isidentifier()) #Falseprint(“_income”。isidentifier()) #Trueprint(“3year”。isidentifier()) #Falseprint(“a-b”。isidentifier()) #Falseprint(“for”。isidentifier()) #True

從上面的程式碼及註釋給出的結果來看,最後一個例子中for輸出的為True,但它是Python的關鍵字,我們不能使用它來命名自己的識別符號。

下面使用keword。iskeyword()函式來驗證一下“for”是不是Python的關鍵字。具體操作過程中可以先使用下面的程式先來判斷一個識別符號是不是Python的關鍵字,如果不是的話,再進一步使用isidentifier()函式來判斷是不是有效的識別符號就行了。

import keywordprint(keyword。iskeyword(“for”)) # True

上面的例子中,首先匯入了Python的keyword模組,然後再使用keyword。iskeyword()函式來判斷。上面判斷“for”是不是Python的關鍵字,結果輸出為True,則for為關鍵字,那麼,你就不能再使用它作為自己的識別符號了。

上面的程式在Python3。8。3中執行的情況如下圖所示:

Python識別符號命名最佳實踐

這似乎有些麻煩,那麼,自己可以定義一個函式來實現上面的兩步操作:

def isValidIdentifier(str): return str。isidentifier() and not keyword。iskeyword(str)print(isValidIdentifier(“for”)) # False

總結

上面對Python的識別符號進行了詳細的介紹,下面再給出整篇文章的總結。

Python識別符號命名最佳實踐

Python識別符號最佳實踐

(1)Python的類名最好以大寫字母開始,如Student,Tutor,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好很多。

以上比較全面的介紹了Python中識別符號的命名規則和具體實踐。

如果你喜歡Python、R等相關內容,歡迎關注我。本號將持續更新相關內容。