Python 3保留字完整列表及含义说明
系统梳理Python 3当前的全部35个保留字,提供按功能分类的详细语义解析、动态查询与校验代码示例,以及保留字与内置函数的机制差异。
在 Python 编程语言中,保留字(Reserved Words,亦称关键字 Keywords)是解释器语法解析器预先保留的专用词汇,构成了程序控制流、结构定义与类型判定的基本骨架。因为这些词汇在语法解析阶段承担着不可替代的结构性职责,Python 严格禁止将它们用作常规变量名、函数名、类名或模块名。本文直接列出 Python 3 的完整 35 个保留字,系统讲解动态查询与校验的操作步骤,按功能分类深度解析每个关键字的具体含义,并厘清保留字与内置函数之间的底层机制差异。
一、如何动态获取与验证 Python 3 保留字
随着 Python 版本的迭代,保留字列表会有细微的增补(例如在 Python 3.7 中正式将 async 与 await 收录为正式关键字)。在日常开发中,无需死记硬背每个版本的所有保留字,可以直接使用 Python 标准库中的 keyword 模块,动态查询当前运行环境中的完整列表并执行命名合规性判断。
在 Python 交互式命令行或代码文件中,运行如下操作命令即可获取完整的关键字清单与数量:
# 导入标准库模块
import keyword
# 获取并打印保留字列表
keywords = keyword.kwlist
print(f"当前 Python 解释器保留字总数: {len(keywords)}")
print(keywords)
# 校验指定名称是否属于保留字
test_cases = ["for", "print", "data_list", "class", "async"]
for name in test_cases:
print(f"'{name}' 是否为保留字: {keyword.iskeyword(name)}")
在当前主流 Python 3 环境下的示例输出如下:
当前 Python 解释器保留字总数: 35
['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']
'for' 是否为保留字: True
'print' 是否为保留字: False
'data_list' 是否为保留字: False
'class' 是否为保留字: True
'async' 是否为保留字: True
二、Python 3 保留字全景速查与分类架构
Python 3 的 35 个保留字并非孤立存在,而是依照语言的基础要素、作用域范围和逻辑流程组织在一起。为了便于记忆与结构化理解,可以将这 35 个保留字划分为 8 大核心功能集群:
三、35个保留字完整含义与用法说明
下面对这 35 个保留字逐一给出语义解释、核心规则及典型的代码应用场景。
1. 常量与特殊值(3个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
False |
布尔类型的“假”值。注意首字母必须大写。在数值上下文中等于整数 0。 | is_valid = False |
True |
布尔类型的“真”值。首字母大写。在数值上下文中等于整数 1。 | while True: process() |
None |
表示“空”、“无值”或缺省返回值的单例对象。变量未赋值或函数无 return 时默认返回 None。推荐用 is None 校验。 |
if result is None: return |
2. 逻辑与关系运算(5个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
and |
逻辑“与”运算符。具备短路特性:左侧若为假直接返回左侧值,否则返回右侧值。 | if score >= 60 and score <= 100: ... |
or |
逻辑“或”运算符。具备短路特性:左侧若为真直接返回左侧值,否则返回右侧值。 | name = input_name or "默认用户" |
not |
逻辑“非”运算符。对后紧跟的表达式取布尔反转,返回 True 或 False。 | if not file_exists: create_file() |
in |
成员检测运算符,或在 for 循环中指示遍历序列。判断元素是否存在于容器中。 | if "admin" in roles: ... |
is |
同一性检测运算符。用于判断两个变量是否引用内存中的同一个对象(即比较 id 是否相同),与 ==(比较值是否相等)有本质区别。 |
if user is None: ... |
3. 控制流分支与循环(8个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
if |
条件分支语句起始关键字。条件为 True 时执行其附属缩进代码块。 | if total > 100: apply_discount() |
elif |
“else if”的简写缩合词,用于紧跟 if 之后的附加条件分支。 | elif total > 50: apply_coupon() |
else |
条件分支的兜底处理分支,也可与 for、while、try 搭配使用(在未被 break 或无异常时触发)。 | else: print("无折扣") |
for |
可迭代对象循环迭代语句。依次取出可迭代对象中的每一个元素并赋值给变量。 | for item in items: print(item) |
while |
条件判定循环语句。只要后续条件表达式结果为 True,就持续重复执行循环体。 | while count > 0: count -= 1 |
break |
强制中断并直接跳出当前最内层的 for 或 while 循环,不再执行该循环剩余轮次。 | if found: break |
continue |
跳过当前轮次循环体的剩余语句,直接进入循环的下一次条件判定或迭代。 | if item.is_empty(): continue |
pass |
语法占位符(空操作语句)。用于在需要语句块但尚未填充逻辑时保证代码结构合法。 | def todo_func(): pass |
4. 函数与面向对象构建(5个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
def |
声明并定义一个具名函数或类内部的方法。 | def calculate_tax(amount): ... |
class |
声明并定义一个自定义类,用于封装属性与方法。 | class DatabaseConnection: ... |
return |
从当前函数中退出,并将执行控制权和可选的计算结果交还给调用者。 | return total * 1.08 |
lambda |
创建匿名微型函数。语法格式为 lambda 参数: 表达式,仅能包含单个表达式。 |
sorted_list = sorted(data, key=lambda x: x[1]) |
yield |
将一个普通函数转化为生成器(Generator)。每次执行挂起当前执行点并向外产出数据。 | def stream_rows(): yield row |
5. 异常处理机制(5个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
try |
异常捕获代码块的起始标志。将可能抛出错误的代码包裹在其缩进区域内。 | try: value = int(input_str) |
except |
捕获并处理 try 块中发生的特定异常类型。 | except ValueError as err: ... |
finally |
无论 try 块是否抛出异常、是否被捕获,最终都无条件执行的清理代码块。 | finally: resource.close() |
raise |
主动抛出一个指定的异常实例或类,触发错误传播机制。 | raise ValueError("参数不可为空") |
assert |
断言调试关键字。判断后续表达式是否成立,若为 False 则触发 AssertionError。 | assert len(data) > 0, "列表不能为空" |
6. 变量作用域控制(2个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
global |
在函数内部声明某个变量为全局命名空间(模块级别)变量,允许在局部重绑全局值。 | def reset(): global counter; counter = 0 |
nonlocal |
在嵌套函数中声明变量属于外层直接闭包环境(非全局),允许修改外层函数的局部变量。 | def inner(): nonlocal count; count += 1 |
7. 模块引入与别名(3个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
import |
导入指定的模块、包或库文件进入当前命名空间。 | import math, os |
from |
指定从特定包或模块中提取指定的子模块、类或函数。 | from datetime import datetime |
as |
重命名别名关键字。在 import 时赋予简短名称,或在 with/except 中绑定上下文对象。 | import numpy as np; with f as file: |
8. 上下文、异步与销毁(4个)
| 保留字 | 核心含义与语法规则 | 典型用法示例 |
|---|---|---|
with |
上下文管理器引导关键字。自动调用目标对象的 __enter__ 与 __exit__,确保资源用毕正确释放。 |
with open("file.txt", "r") as f: ... |
async |
声明异步函数(协程)或异步上下文/迭代器的关键字。 | async def fetch_api(): ... |
await |
挂起当前协程的执行,等待可等待对象(Awaitable)完成并返回结果。仅可出现在 async 函数内。 | response = await client.get(url) |
del |
删除对象的引用、字典的键或列表的切片索引,解除名称绑定。 | del cache_dict["old_token"] |
四、保留字与内置函数(Built-ins)的机制差异
初学者容易将 print、id、type、list 等内置函数误当作保留字。从表面上看,它们都是 Python 开箱即用的名字,但在解释器的底层架构上,硬保留字(Keywords)与内置名字(Builtins)处于两个完全不同的层次:
虽然将变量命名为 list = [1, 2, 3] 或 str = "text" 不会触发 SyntaxError,但这会使内置的类型构造器 list() 和 str() 在当前作用域内失效。如果确实需要使用描述性词汇,建议添加后缀或前缀,例如 item_list、raw_str 或 user_id。
五、标识符命名合规性判断决策流程
在设计模块、类或函数命名时,可以通过以下逻辑树确定一个名称是否合规且安全:
六、扩展认知:Python 3.10+ 的“软保留字”(Soft Keywords)
在 Python 3.10 引入结构化模式匹配(Pattern Matching)语法时,官方新增了 match、case 以及通配符 _。为了最大程度兼容既有代码,避免破坏已有的变量名或函数名,Python 引入了软保留字(Soft Keywords)的概念:
- 硬保留字(Hard Keywords):即上述 35 个保留字,在任何语法上下文下都绝对禁止用作变量或函数名。
- 软保留字(Soft Keywords):仅在特定的语法结构语句头部(例如
match subject:或case 1:)被当作关键字解析;在普通赋值、函数定义中,依然可以合法作为普通标识符使用。
可以通过 keyword.softkwlist 查看当前解释器支持的软关键字列表:
import keyword
print(f"软保留字列表: {keyword.softkwlist}")
# 常见输出: ['_', 'case', 'match']
# 以下代码在 Python 3.10+ 中完全合法,不会引发语法错误
match = "用户查询匹配"
case = 200
print(match, case)
七、总结
掌握 Python 3 的保留字是写出规范、稳健代码的基础基石。牢记以下关键要点:
- 当前主流 Python 3 共有 35 个硬保留字,严格禁止用作任何自定义标识符名称。
- 其中只有
False、None、True三个词的首字母为大写,其余 32 个全部由小写字母组成。 - 需要动态判断时,优先调用内置的
keyword.iskeyword(name)接口。 - 区分硬保留字与内置函数(
print、list等),不要随意给内置函数同名变量赋值,保证运行时环境的干净与健壮。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









