一文看懂Python標識符的命名規(guī)則、規(guī)范及避坑指南
前言
在編寫 Python 代碼時,我們無時無刻不在和標識符打交道。變量名、函數(shù)名、類名、模塊名……這些都屬于標識符??梢哉f,標識符就是代碼里的 “名字”,起得規(guī)范、易懂,代碼可讀性會直接提升一個檔次。
本文就帶你徹底搞懂:什么是 Python 標識符、命名規(guī)則、關鍵字限制,以及行業(yè)通用的命名規(guī)范。
一、什么是標識符
標識符(Identifier) 是 Python 中用來標識變量、函數(shù)、類、模塊、對象等的名稱。簡單理解:你給代碼里的各種元素起的名字,都叫標識符。
# 下面這些都是標識符
name = "Python" # 變量名: name
def get_info(): # 函數(shù)名: get_info()
pass
class Student: # 類名: Student
pass
二、標識符的硬性命名規(guī)則
這些規(guī)則必須遵守,否則程序直接報錯。
- 只能由字母、數(shù)字、下劃線
_組成; - 不能以數(shù)字開頭;
- 嚴格區(qū)分大小寫:
Name和name是兩個完全不同的標識符; - 不能使用 Python 關鍵字;
- 不能包含空格、運算符(
+ - * /)、特殊符號(@ # $ %等)
三、合法 vs 非法標識符示例
3.1 合法示例
name age18 my_name _user total_count
3.2 非法示例
123name # 錯誤:數(shù)字開頭 user-name # 錯誤:含減號 my name # 錯誤:含空格 if # 錯誤:關鍵字 class # 錯誤:關鍵字 a@bc # 錯誤:含特殊符號
四、Python 關鍵字(不能用作標識符)
Python 有一批內(nèi)置關鍵字,屬于語法保留字,絕對不能用來做變量名或函數(shù)名。
常見關鍵字:
if else for while def class import from return True False None and or not break continue pass try except finally lambda del global nonlocal
查看完整關鍵字列表:
import keyword print(keyword.kwlist)
五、Python 官方推薦命名規(guī)范(PEP 8)
規(guī)則是 “不報錯”,規(guī)范是 “寫得好看、專業(yè)”。遵循 PEP 8 是合格 Python 開發(fā)者的基本素養(yǎng)。
5.1 變量名、函數(shù)名、模塊名
使用 蛇形命名法(snake_case)
- 全小寫
- 單詞之間用下劃線分隔
- Python 模塊(.py 文件)同樣遵循小寫蛇形命名,盡量簡短
user_name total_score calculate_average()
5.2 類名
使用 大駝峰命名法(PascalCase / CapWords)
- 每個單詞首字母大寫
- 不使用下劃線
class StudentInfo: class UserManager:
5.3 常量
全大寫,單詞用下劃線分隔
注意:Python 沒有語法層面的真正常量,僅靠命名約定表示不隨意修改
MAX_COUNT = 100 PI = 3.14159
5.4 私有屬性/方法
5.4.1 單下劃線 _ 開頭
- 以單下劃線
_開頭,表示內(nèi)部使用,不建議外部訪問; - 屬性、方法都可以用單下劃線開頭做私有標記。
重點:只是程序員君子約定,Python 語法不強制隔離,外部仍可訪問,只是規(guī)范上不建議調(diào)用。
class User:
def __init__(self):
self._password = "123456" # 約定私有屬性
def _check_password(self): # 約定私有方法
pass
5.4.2 雙下劃線 __ 開頭
以雙下劃線 __ 開頭的屬性 / 方法,Python 會做名稱改寫,外部無法直接訪問,實現(xiàn)真正意義上的私有。
注意:僅開頭雙下劃線,不要前后都加(前后雙下劃線是魔術方法)
class User:
def __init__(self):
self.__password = "123456" # 強制私有屬性
# 外部無法直接訪問
# u = User()
# print(u.__password) # 直接報錯
5.5 系統(tǒng)內(nèi)置魔術方法
雙下劃線開頭 + 雙下劃線結尾 __xxx__,是 Python 內(nèi)置魔術方法。
注意:不要自己自定義創(chuàng)建這種前后雙下劃線的名字,避免和系統(tǒng)內(nèi)置方法沖突。
__init__ __str__ __len__
六、避坑指南
6.1 混淆 Python 內(nèi)置函數(shù)名
雖然內(nèi)置函數(shù)不是關鍵字(可以覆蓋賦值),但這會導致后續(xù)調(diào)用出錯:
# 合法但非常危險 len = 10 # 覆蓋了內(nèi)置函數(shù) len() my_list = [1,2,3] print(len(my_list)) # TypeError: 'int' object is not callable
建議:避免使用 len、str、list、dict、print、input 等內(nèi)置函數(shù)名。
6.4 使用關鍵字作為變量名
Python 關鍵字是語法保留字,強行用來做變量名 / 函數(shù)名會直接報語法錯誤,代碼無法運行。
# 直接語法報錯,根本無法執(zhí)行 # 報錯信息:SyntaxError: invalid syntax(語法無效) if = 100 class = "Python" for = 666
避坑方案:
- 命名前先確認不是關鍵字
- 關鍵字加后綴:
if→if_flag,class→class_name - 用
keyword.iskeyword("名字")提前檢查是否為關鍵字
6.3 單下劃線_的特殊含義
在交互式環(huán)境或某些循環(huán)中,_ 會存儲上一次表達式的結果:
# 交互式環(huán)境示例 >>> 5 + 3 8 >>> _ # 保存上一次結果 8
避坑:不要在代碼中依賴 _ 作為普通變量(除非明確用于 “占位” )。
6.4 Unicode 標識符(Python 3 支持但盡量別用)
Python 3 允許使用 Unicode 字符作為標識符:
# 語法合法 年齡 = 25 函數(shù)名 = lambda x: x * 2 print(函數(shù)名(年齡)) # 50
建議:除非是教學演示,生產(chǎn)代碼堅持使用 ASCII 英文,避免編碼和協(xié)作問題。
全文總結
標識符本質是 Python 中變量、函數(shù)、類、模塊等所有代碼元素的 “名字”,核心要點可快速梳理為:
- 組成要求:僅能由字母、數(shù)字、下劃線
_構成,絕對不能以數(shù)字開頭,禁止包含空格、運算符及特殊符號; - 核心限制:嚴格區(qū)分大小寫,嚴禁使用 Python 關鍵字;
- 規(guī)范準則:變量名、函數(shù)名、模塊名用蛇形命名法(全小寫+下劃線分隔),類名用大駝峰命名法(首字母大寫無下劃線),常量用全大寫+下劃線分隔;
- 避坑重點:慎用內(nèi)置函數(shù)名,盡量不用中文命名
以上就是一文看懂Python標識符的命名規(guī)則、規(guī)范及避坑指南的詳細內(nèi)容,更多關于Python標識符全指南的資料請關注腳本之家其它相關文章!
相關文章
在Python Flask App中獲取已發(fā)布的JSON對象的解決方案
這篇文章主要介紹了在Python Flask App中獲取已發(fā)布的JSON對象的解決方案,文中通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-08-08

