一、前言
你是否曾因变量名写错而调试半小时?
是否好奇为什么 class、def 不能当变量名?
又或者看到别人写的 user_name、max_retry 感到困惑?
这些问题的答案,都藏在 python 的两个基础概念中:标识符(identifier) 与 保留字(reserved words / keywords)。
本文将带你: ✅ 掌握标识符的命名规则与最佳实践
✅ 了解 python 所有保留字及其用途
✅ 避免常见命名错误(如覆盖内置函数)
✅ 写出符合 pep8 规范的专业代码
二、什么是标识符?
标识符(identifier) 是你在程序中用来命名变量、函数、类、模块等的“名字”。
例如:
name = "alice" # 变量名:name
def calculate_sum(): # 函数名:calculate_sum
pass
class student: # 类名:student
pass这些 name、calculate_sum、student 都是标识符。
三、python 标识符的命名规则
✅ 合法标识符必须满足:
- 只能包含:字母(a–z, a–z)、数字(0–9)、下划线
_ - 不能以数字开头
- 区分大小写:
name和name是两个不同标识符 - 不能是保留字(关键字)
✅ 合法示例:
user_name _total_count pi get_data myclass
❌ 非法示例:
2nd_place # 以数字开头 ❌ my-variable # 包含连字符 ❌ class # 是保留字 ❌ @var # 包含特殊符号 ❌
💡 小技巧:不确定是否合法?用
str.isidentifier()判断:
print("user_name".isidentifier()) # true
print("2nd".isidentifier()) # false
print("class".isidentifier()) # true(语法上合法,但它是关键字,不能用!)四、python 保留字(keywords)详解
保留字是 python 语言预定义的、具有特殊含义的单词,不能用作标识符。
截至 python 3.12,共有 35 个保留字。你可以通过以下方式查看:
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']
常见保留字分类速览:
| 类别 | 保留字 |
|---|---|
| 控制流 | if, elif, else, for, while, break, continue |
| 函数/类定义 | def, class, return, yield |
| 异常处理 | try, except, finally, raise, assert |
| 逻辑运算 | 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!
五、命名规范:不只是“能用”,更要“好用”
即使标识符合法,乱命名也会让代码难以维护。python 官方推荐遵循 pep8 风格指南。
📌 推荐命名风格:
| 对象类型 | 命名风格 | 示例 |
|---|---|---|
| 变量、函数、方法 | snake_case(小写+下划线) | user_id, get_user_info |
| 类名 | pascalcase(大驼峰) | userprofile, databaseconnection |
| 常量(模块级) | upper_snake_case | max_connections, default_timeout |
| 私有成员(约定) | 单下划线开头 | _internal_helper |
| 强私有(名称修饰) | 双下划线开头 | __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 # 混合风格,不符合 python 习惯
class usermanager: # 类名应大写
def adduser(): # 函数名不应大写开头
pass六、常见陷阱与避坑指南
❌ 陷阱 1:覆盖内置函数或类型
list = [1, 2, 3] # 覆盖了内置 list()
print(list("abc")) # typeerror: 'list' object is not callable✅ 解决方案:避免使用内置名称(如 list, str, int, dict, open, id 等)
🔍 查看所有内置名称:
import builtins print(dir(builtins))
❌ 陷阱 2:使用中文或拼音命名(虽合法但不推荐)
用户名 = "张三" # 合法,但不利于协作和国际化
def 获取数据(): # 同上
pass✅ 建议:始终使用英文命名,哪怕简单如 user, data, result
❌ 陷阱 3:单字符命名(除非在极小作用域)
for i in range(10): # 可接受(传统循环变量)
pass
def f(x): # 不推荐!x 是什么?
return x * 2✅ 改进:
def double_number(value):
return value * 2七、工具辅助:让命名更规范
- ide 提示:vs code / pycharm 会高亮保留字,并提示命名风格问题
- 静态检查工具:
flake8:检查 pep8 合规性pylint:检测命名、未使用变量等
- 命名插件:如 vs code 的 “python docstring generator” 可自动生成规范注释
八、总结
| 概念 | 关键点 |
|---|---|
| 标识符 | 用于命名变量、函数、类等,需符合命名规则 |
| 保留字 | 35 个关键字,具有特殊语法意义,禁止用作标识符 |
| 命名规范 | 遵循 pep8:snake_case、pascalcase、upper_snake_case |
| 避坑原则 | 不覆盖内置、不用拼音、不用模糊缩写 |
🌟 记住:
好的命名,是代码最好的注释。
一个清晰的user_email,胜过十行解释!
九、结语
到此这篇关于python中的标识符与保留字的文章就介绍到这了,更多相关python标识符与保留字内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论