Python 3保留字完整列表及含义说明

阿麦
阿麦
发布时间:2026-11-02 | 6人浏览过
原创

系统梳理Python 3当前的全部35个保留字,提供按功能分类的详细语义解析、动态查询与校验代码示例,以及保留字与内置函数的机制差异。

在 Python 编程语言中,保留字(Reserved Words,亦称关键字 Keywords)是解释器语法解析器预先保留的专用词汇,构成了程序控制流、结构定义与类型判定的基本骨架。因为这些词汇在语法解析阶段承担着不可替代的结构性职责,Python 严格禁止将它们用作常规变量名、函数名、类名或模块名。本文直接列出 Python 3 的完整 35 个保留字,系统讲解动态查询与校验的操作步骤,按功能分类深度解析每个关键字的具体含义,并厘清保留字与内置函数之间的底层机制差异。

一、如何动态获取与验证 Python 3 保留字

随着 Python 版本的迭代,保留字列表会有细微的增补(例如在 Python 3.7 中正式将 async 与 await 收录为正式关键字)。在日常开发中,无需死记硬背每个版本的所有保留字,可以直接使用 Python 标准库中的 keyword 模块,动态查询当前运行环境中的完整列表并执行命名合规性判断。

Python 3保留字完整列表及含义说明
图 1:使用标准库 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 大核心功能集群:

Python 3保留字完整列表及含义说明
图 2:Python 3 保留字 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)处于两个完全不同的层次:

Python 3保留字完整列表及含义说明
图 3:硬保留字与内置函数在语法解析与命名空间层级的本质区别
重要注意:避开内置函数覆盖陷阱

虽然将变量命名为 list = [1, 2, 3] 或 str = "text" 不会触发 SyntaxError,但这会使内置的类型构造器 list() 和 str() 在当前作用域内失效。如果确实需要使用描述性词汇,建议添加后缀或前缀,例如 item_list、raw_str 或 user_id。

五、标识符命名合规性判断决策流程

在设计模块、类或函数命名时,可以通过以下逻辑树确定一个名称是否合规且安全:

Python 3保留字完整列表及含义说明
图 4:Python 命名检查的逐级决策路径与排查指引

六、扩展认知: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 的保留字是写出规范、稳健代码的基础基石。牢记以下关键要点:

  1. 当前主流 Python 3 共有 35 个硬保留字,严格禁止用作任何自定义标识符名称。
  2. 其中只有 False、None、True 三个词的首字母为大写,其余 32 个全部由小写字母组成。
  3. 需要动态判断时,优先调用内置的 keyword.iskeyword(name) 接口。
  4. 区分硬保留字与内置函数(print、list 等),不要随意给内置函数同名变量赋值,保证运行时环境的干净与健壮。
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表