一、前言
在学习 Python 编程语言的过程中,标识符(Identifier) 和 保留字(Keywords) 是两个非常基础但又极其重要的概念。它们是编写程序时必须遵守的语言规则之一。
本文将带你深入了解:
- 什么是标识符;
- 标识符的命名规则与规范;
- Python 中有哪些保留字;
- 常见错误与注意事项;
- 实际开发中的命名建议;
掌握好这些内容,不仅能帮助你写出更规范、可读性更强的代码,还能避免因使用关键字作为变量名而导致的语法错误。
二、什么是标识符?
标识符 是程序员为变量、函数、类、模块等命名所使用的符号名称。
Python 中的标识符可以是一个字母、下划线或汉字(不推荐)开头,后跟任意数量的字母、数字、下划线组成。
✅ 合法标识符示例:
name
user_age
_total
my_function
MyClass
❌ 非法标识符示例及原因:
| 标识符 | 错误原因 |
|---|---|
2nd_place | 以数字开头 |
class | 使用了保留字 |
first-name | 包含非法字符 - |
hello world | 包含空格 |
三、标识符的命名规则(强制)
Python 对标识符有明确的语法规则,违反以下规则会导致编译错误:
- 只能包含字母(A-Z, a-z)、数字(0-9)、下划线
_ - 不能以数字开头
- 不能是 Python 的保留字
- 区分大小写:
age和Age是不同的标识符
四、标识符的命名规范(建议)
虽然不是强制要求,但遵循良好的命名规范有助于提高代码的可读性和团队协作效率。
✅ 命名风格推荐:
| 类型 | 推荐风格 | 示例 |
|---|---|---|
| 变量名、函数名 | 小写字母 + 下划线 | user_name, get_data() |
| 类名 | 大驼峰(PascalCase) | Student, DataProcessor |
| 常量名 | 全大写 + 下划线 | MAX_SIZE, DEFAULT_TIMEOUT |
| 私有属性/方法 | 单下划线开头 | _internal_value, _helper_method() |
📌 注意:单下划线开头表示“受保护”的含义,双下划线开头表示“私有”(会被名称重整)。
五、什么是保留字(Keywords)?
保留字(Keywords) 是 Python 解释器预定义的一组具有特殊意义的单词,不能用作标识符。
它们构成了 Python 语言的基本语法结构,如控制流程、数据类型、函数定义等。
✅ 查看当前版本所有保留字的方法:
import keyword
print(keyword.kwlist)
输出结果(以 Python 3.12 为例):
[ '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']
📌 目前 Python 3.12 有 35 个保留字。
六、常见保留字分类说明
| 分类 | 关键字 | 用途说明 |
|---|---|---|
| 控制结构 | if, elif, else, for, while, break, continue | 条件判断、循环控制 |
| 函数定义 | def, return, lambda, yield | 定义函数、返回值、匿名函数、生成器 |
| 异常处理 | try, except, finally, raise, assert | 捕获异常、抛出异常、断言条件 |
| 类与对象 | class, self, super | 定义类、实例方法、调用父类 |
| 导入模块 | import, from, as | 导入外部模块或库 |
| 数据类型 | True, False, None | 布尔值、空值 |
| 逻辑运算 | and, or, not | 布尔逻辑运算 |
| 特殊功能 | global, nonlocal, del, pass, with | 变量作用域控制、删除对象、占位符、上下文管理 |
七、常见错误与解决方案
| 错误类型 | 示例 | 原因 | 解决方案 |
|---|---|---|---|
| 使用保留字命名变量 | class = "Math" | class 是保留字 | 更换变量名为 course_class |
| 使用非法字符 | my-var = 10 | - 不允许出现在标识符中 | 改为 my_var |
| 标识符以数字开头 | 1st_place = True | 违反命名规则 | 改为 first_place |
| 忽略大小写差异 | Name vs name | 被视为不同变量 | 保持命名一致性 |
| 使用中文命名 | 姓名 = "张三" | 虽然合法但不推荐 | 推荐使用英文命名 |
八、实际开发中的命名建议
| 场景 | 建议 |
|---|---|
| 变量命名 | 见名知意,如 user_count, total_price |
| 函数命名 | 动词开头,如 calculate_tax(), save_to_file() |
| 类命名 | 名词,如 User, InvoiceItem |
| 常量命名 | 全大写,如 MAX_RETRY = 3 |
| 模块命名 | 简洁、小写,如 utils.py, config.py |
| 包命名 | 同模块,避免使用复数或缩写 |
九、总结对比表
| 类别 | 数量 | 是否能修改 | 示例 |
|---|---|---|---|
| 标识符 | 无限 | ✅ 可自由定义(需符合规则) | username, calculate_sum() |
| 保留字 | 35(Python 3.12) | ❌ 不可作为变量名 | if, for, class |
十、结语
感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!