Python中的標(biāo)識(shí)符與保留字最佳實(shí)踐
一、前言
你是否曾因變量名寫(xiě)錯(cuò)而調(diào)試半小時(shí)?
是否好奇為什么 class、def 不能當(dāng)變量名?
又或者看到別人寫(xiě)的 user_name、MAX_RETRY 感到困惑?
這些問(wèn)題的答案,都藏在 Python 的兩個(gè)基礎(chǔ)概念中:標(biāo)識(shí)符(Identifier) 與 保留字(Reserved Words / Keywords)。
本文將帶你: ? 掌握標(biāo)識(shí)符的命名規(guī)則與最佳實(shí)踐
? 了解 Python 所有保留字及其用途
? 避免常見(jiàn)命名錯(cuò)誤(如覆蓋內(nèi)置函數(shù))
? 寫(xiě)出符合 PEP8 規(guī)范的專業(yè)代碼
二、什么是標(biāo)識(shí)符?
標(biāo)識(shí)符(Identifier) 是你在程序中用來(lái)命名變量、函數(shù)、類、模塊等的“名字”。
例如:
name = "Alice" # 變量名:name
def calculate_sum(): # 函數(shù)名:calculate_sum
pass
class Student: # 類名:Student
pass這些 name、calculate_sum、Student 都是標(biāo)識(shí)符。
三、Python 標(biāo)識(shí)符的命名規(guī)則
? 合法標(biāo)識(shí)符必須滿足:
- 只能包含:字母(a–z, A–Z)、數(shù)字(0–9)、下劃線
_ - 不能以數(shù)字開(kāi)頭
- 區(qū)分大小寫(xiě):
Name和name是兩個(gè)不同標(biāo)識(shí)符 - 不能是保留字(關(guān)鍵字)
? 合法示例:
user_name _total_count PI get_data MyClass
? 非法示例:
2nd_place # 以數(shù)字開(kāi)頭 ? my-variable # 包含連字符 ? class # 是保留字 ? @var # 包含特殊符號(hào) ?
?? 小技巧:不確定是否合法?用
str.isidentifier()判斷:
print("user_name".isidentifier()) # True
print("2nd".isidentifier()) # False
print("class".isidentifier()) # True(語(yǔ)法上合法,但它是關(guān)鍵字,不能用!)四、Python 保留字(Keywords)詳解
保留字是 Python 語(yǔ)言預(yù)定義的、具有特殊含義的單詞,不能用作標(biāo)識(shí)符。
截至 Python 3.12,共有 35 個(gè)保留字。你可以通過(guò)以下方式查看:
import keyword print(keyword.kwlist)
輸出:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'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']
常見(jiàn)保留字分類速覽:
| 類別 | 保留字 |
|---|---|
| 控制流 | if, elif, else, for, while, break, continue |
| 函數(shù)/類定義 | def, class, return, yield |
| 異常處理 | try, except, finally, raise, assert |
| 邏輯運(yùn)算 | and, or, not, is, in |
| 作用域 | global, nonlocal |
| 異步編程 | async, await |
| 常量 | True, False, None |
| 其他 | import, from, as, with, pass, del, lambda |
?? 注意:
True、False、None雖然是常量,但也是保留字,不能賦值:
True = 1 # SyntaxError!
五、命名規(guī)范:不只是“能用”,更要“好用”
即使標(biāo)識(shí)符合法,亂命名也會(huì)讓代碼難以維護(hù)。Python 官方推薦遵循 PEP8 風(fēng)格指南。
?? 推薦命名風(fēng)格:
| 對(duì)象類型 | 命名風(fēng)格 | 示例 |
|---|---|---|
| 變量、函數(shù)、方法 | snake_case(小寫(xiě)+下劃線) | user_id, get_user_info |
| 類名 | PascalCase(大駝峰) | UserProfile, DatabaseConnection |
| 常量(模塊級(jí)) | UPPER_SNAKE_CASE | MAX_CONNECTIONS, DEFAULT_TIMEOUT |
| 私有成員(約定) | 單下劃線開(kāi)頭 | _internal_helper |
| 強(qiáng)私有(名稱修飾) | 雙下劃線開(kāi)頭 | __secret_data |
? 正確示例:
MAX_RETRY_COUNT = 3
class UserManager:
def __init__(self):
self._users = []
def add_new_user(self, user_name):
if not user_name:
raise ValueError("User name cannot be empty")
self._users.append(user_name)? 反面教材:
maxRetryCount = 3 # 混合風(fēng)格,不符合 Python 習(xí)慣
class usermanager: # 類名應(yīng)大寫(xiě)
def AddUser(): # 函數(shù)名不應(yīng)大寫(xiě)開(kāi)頭
pass六、常見(jiàn)陷阱與避坑指南
? 陷阱 1:覆蓋內(nèi)置函數(shù)或類型
list = [1, 2, 3] # 覆蓋了內(nèi)置 list()
print(list("abc")) # TypeError: 'list' object is not callable? 解決方案:避免使用內(nèi)置名稱(如 list, str, int, dict, open, id 等)
?? 查看所有內(nèi)置名稱:
import builtins print(dir(builtins))
? 陷阱 2:使用中文或拼音命名(雖合法但不推薦)
用戶名 = "張三" # 合法,但不利于協(xié)作和國(guó)際化
def 獲取數(shù)據(jù)(): # 同上
pass? 建議:始終使用英文命名,哪怕簡(jiǎn)單如 user, data, result
? 陷阱 3:?jiǎn)巫址ǔ窃跇O小作用域)
for i in range(10): # 可接受(傳統(tǒng)循環(huán)變量)
pass
def f(x): # 不推薦!x 是什么?
return x * 2? 改進(jìn):
def double_number(value):
return value * 2七、工具輔助:讓命名更規(guī)范
- IDE 提示:VS Code / PyCharm 會(huì)高亮保留字,并提示命名風(fēng)格問(wèn)題
- 靜態(tài)檢查工具:
flake8:檢查 PEP8 合規(guī)性pylint:檢測(cè)命名、未使用變量等
- 命名插件:如 VS Code 的 “Python Docstring Generator” 可自動(dòng)生成規(guī)范注釋
八、總結(jié)
| 概念 | 關(guān)鍵點(diǎn) |
|---|---|
| 標(biāo)識(shí)符 | 用于命名變量、函數(shù)、類等,需符合命名規(guī)則 |
| 保留字 | 35 個(gè)關(guān)鍵字,具有特殊語(yǔ)法意義,禁止用作標(biāo)識(shí)符 |
| 命名規(guī)范 | 遵循 PEP8:snake_case、PascalCase、UPPER_SNAKE_CASE |
| 避坑原則 | 不覆蓋內(nèi)置、不用拼音、不用模糊縮寫(xiě) |
?? 記住:
好的命名,是代碼最好的注釋。
一個(gè)清晰的user_email,勝過(guò)十行解釋!
九、結(jié)語(yǔ)
到此這篇關(guān)于Python中的標(biāo)識(shí)符與保留字的文章就介紹到這了,更多相關(guān)Python標(biāo)識(shí)符與保留字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python虛擬環(huán)境管理工具Conda的使用指南
在Python開(kāi)發(fā)中,虛擬環(huán)境是管理項(xiàng)目依賴的核心工具,常見(jiàn)的虛擬環(huán)境管理工具包括venv、virtualenv和Conda,本文將詳細(xì)介紹這三種工具的使用方式并對(duì)比其特點(diǎn)與適用場(chǎng)景2025-06-06
Python按條件刪除Excel表格數(shù)據(jù)的方法(示例詳解)
本文介紹基于Python語(yǔ)言,讀取Excel表格文件,基于我們給定的規(guī)則,對(duì)其中的數(shù)據(jù)加以篩選,將不在指定數(shù)據(jù)范圍內(nèi)的數(shù)據(jù)剔除,保留符合我們需要的數(shù)據(jù)的方法,感興趣的朋友跟隨小編一起看看吧2024-08-08
如何在Python里使用ChatGPT及ChatGPT簡(jiǎn)介
今年最火的應(yīng)該就是ChatGPT了,現(xiàn)在短短2個(gè)月已經(jīng)突破了1億注冊(cè)用戶,馬斯克可高興壞了,這篇文章主要介紹了如何在Python里使用ChatGPT及ChatGPT是什么?注冊(cè)方式?需要的朋友可以參考下2023-02-02
Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)
今天小編就為大家分享一篇Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)的資源
這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)資源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
利用python為PostgreSQL的表自動(dòng)添加分區(qū)
這篇文章主要介紹了利用python為PostgreSQL的表自動(dòng)添加分區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
對(duì)python實(shí)現(xiàn)模板生成腳本的方法詳解
今天小編就為大家分享一篇對(duì)python實(shí)現(xiàn)模板生成腳本的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
基于Python編寫(xiě)一個(gè)簡(jiǎn)單的服務(wù)注冊(cè)發(fā)現(xiàn)服務(wù)器
我們都知道有很多的非常著名的注冊(cè)服務(wù)器,例如:?Consul、ZooKeeper、etcd,甚至借助于redis完成服務(wù)注冊(cè)發(fā)現(xiàn)。但是本篇文章我們將使用python?socket寫(xiě)一個(gè)非常簡(jiǎn)單的服務(wù)注冊(cè)發(fā)現(xiàn)服務(wù)器,感興趣的可以了解一下2023-04-04
解決redis與Python交互取出來(lái)的是bytes類型的問(wèn)題
這篇文章主要介紹了解決redis與Python交互取出來(lái)的是bytes類型的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07

