在 Python 中,需要根據規則定義標識符(變量名、函數名、類名等)。不符合規則的名稱不能用作標識符,會導致錯誤。
此處提供以下信息。
- 可以和不能在標識符(名稱)中使用的字符
- ASCII 字符
- Unicode 字符
- 歸一化(例如在數學中)
- 檢查字符串是否為有效標識符:
isidentifier()
- 不能用作標識符的詞(名稱)(保留詞)
- 不應用作標識符(名稱)的詞
- PEP8 的命名約定
以下說明在 Python 3 中給出,在 Python 2 中可能有所不同。
可以和不能在標識符(名稱)中使用的字符
表示可以和不能用作標識符(名稱)的字符。
另外,雖然有很多東西要寫,但基本上你只需要記住以下幾點。
- 使用大寫和小寫字母、數字和下劃線。
- 第一個(第一個)字母不能是數字。
ASCII 字符
可用作標識符(名稱)的 ASCII 字符有大寫和小寫字母(A~Z、a~z)、數字(0~9)和下劃線(_)。字母表區分大小寫。
AbcDef_123 = 100
print(AbcDef_123)
# 100
不能使用下劃線以外的符號。
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
此外,不能在開頭(第一個字母)使用數字。
# 1_abc = 100
# SyntaxError: invalid token
也可以在開頭使用下劃線。
_abc = 100
print(_abc)
# 100
但是,請注意開頭的下劃線可能具有特殊含義。
Unicode 字符
從 Python 3 開始,也可以使用 Unicode 字符。
変数1 = 100
print(変数1)
# 100
並非所有 Unicode 字符都可以使用,並且根據 Unicode 類別,有些字符無法使用。例如,不能使用標點符號和象形圖等符號。
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
可以使用的 Unicode 類別代碼請參閱官方文檔。
在很多情況下,使用漢字等並沒有什麼優勢,僅僅是因為Unicode字符也可以使用(不會出錯)。
歸一化(例如在數學中)
Unicode 字符被轉換為規範化形式 NFKC 以進行解釋。例如,全角字母轉換為半角字母(ASCII 字符)。
請注意,即使源代碼顯示不同的顯示,它也被視為相同的對象並將被覆蓋。
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
檢查字符串是否為有效標識符:isidentifier()
可以使用字符串方法 isidentifier() 來檢查字符串作為標識符是否有效。
如果作為標識符有效,則返回 true,如果無效則返回 false。
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
不能用作標識符的詞(名稱)(保留詞)
有一些詞(保留詞)不能用作標識符,即使它們是作為標識符(名稱)的有效字符串。
由於保留字是作為標識符的有效字符串,因此 isidentifier() 返回 true,但如果將其用作標識符,則會發生錯誤。
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
要獲取保留字列表並檢查字符串是否為保留字,請使用標準庫的關鍵字模塊。
不應用作標識符(名稱)的詞
例如,Python 內置函數的名稱可以用作標識符,因此您可以將新值作為變量分配給它們。
例如,len() 是一個內置函數,它返回列表中的元素數或字符串中的字符數。
print(len)
# <built-in function len>
print(len('abc'))
# 3
如果您為此名稱 len 分配一個新值,則原始函數將被覆蓋並變得無法使用。請注意,分配新值時不會打印錯誤或警告。
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
另一個常見的錯誤是使用 list = [0, 1, 2],這使得 list() 無法使用。當心。
PEP8 的命名約定
PEP 代表 Python Enhancement Proposal,這是一份描述 Python 的新特性和其他方面的文檔。
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org
PEP8是第八個,它描述了“Python代碼的風格指南”,即Python的風格指南。
還提到了命名約定。
有關更多詳細信息,請參閱上面的鏈接,但例如,建議使用以下寫作風格。
- 模塊
lowercase_underscore
- 小寫+下劃線
- 包裹
lowercase
- 所有小寫字母
- 類、異常
CapitalizedWords
(CamelCase
)- 單詞首字母大寫,無下劃線
- 函數、變量和方法
lowercase_underscore
- 小寫+下劃線
- 持續的
ALL_CAPS
- 大寫字母 + 下劃線
但是,如果您的組織沒有自己的命名約定,則建議遵循 PEP8。