- Python 所有关键字详解
Python 关键字是语言内置的、具有特殊含义的标识符,用于定义语法结构、控制流程、声明类型等。这些关键字不能作为变量名、函数名、类名等自定义标识符,且区分大小写(全部为小写,除特殊情况外)。截至 Python 3.12 版本,共有 35 个关键字,下文按功能分类逐一解析,结合示例帮助理解其用法。
一、控制流关键字(12个)
此类关键字用于控制程序执行顺序,包括条件判断、循环控制、跳转等。
if:条件判断的起始,用于定义分支逻辑。当条件为 True 时,执行后续缩进代码块。
age = 18 if age >= 18: print("成年") # 输出:成年else:与 if 搭配,当 if 条件为 False 时执行后续代码块,可单独使用或与 elif 组合。
if age < 18: print("未成年") else: print("成年") # 输出:成年elif:即 “else if”,用于多分支条件判断,在 if 和 else 之间插入额外判断逻辑。
score = 85 if score >= 90: print("优秀") elif score >= 70: print("良好") # 输出:良好 else: print("及格")for:用于遍历可迭代对象(如列表、字符串、字典),实现循环逻辑。
for char in "Python": print(char, end=" ") # 输出:P y t h o nwhile:基于条件循环,只要条件为 True,就重复执行缩进代码块,需注意避免死循环。
i = 0 while i < 5: print(i) i += 1 # 输出:0 1 2 3 4break:终止当前所在的循环(for 或 while),跳出循环体执行后续代码。
for i in range(10): if i == 5: break print(i) # 输出:0 1 2 3 4continue:跳过当前循环的剩余代码,直接进入下一次循环迭代。
for i in range(10): if i % 2 == 0: continue print(i) # 输出:1 3 5 7 9pass:空语句,用作占位符,表示“什么都不做”,避免语法错误(如未实现的函数、分支)。
if age < 18: pass # 暂不实现逻辑,后续补充 else: print("成年")match(Python 3.10+):结构化模式匹配的起始,类似其他语言的 switch-case,支持复杂模式匹配。
status = 200 match status: case 200: print("成功") # 输出:成功 case 404: print("未找到") case _: print("其他状态")case(Python 3.10+):与 match 搭配,定义匹配分支,可指定具体值、类型、解构模式等。
as:多场景用法,可在匹配(match-case)中给模式赋值,也可用于导入模块/异常别名、类型标注。
match [1, 2, 3]: case [a, b, c] as lst: print(lst) # 输出:[1,2,3]_(特殊关键字):在 match-case 中作为通配符,匹配任意未被前面 case 覆盖的值;也常用作无关变量名。
二、定义声明关键字(8个)
此类关键字用于定义函数、类、模块、变量作用域等核心语法结构。
def:定义普通函数,指定函数名、参数列表和函数体,函数执行后可返回值。
def add(a, b): return a + b print(add(2, 3)) # 输出:5class:定义类,面向对象编程的核心,可包含属性和方法,支持继承、多态等特性。
class Person: def __init__(self, name): self.name = name p = Person("Alice") print(p.name) # 输出:Aliceimport:导入模块或模块中的对象(函数、类、变量),扩展程序功能。
import math print(math.pi) # 输出:3.141592653589793from:与 import 搭配,从模块中导入指定对象,避免导入整个模块。
from math import pi print(pi) # 输出:3.141592653589793return:在函数中返回值,结束函数执行,若未指定返回值则默认返回 None。
def sub(a, b): return a - b print(sub(5, 2)) # 输出:3yield:定义生成器函数,每次调用 next() 时执行到 yield 处暂停,返回 yield 后的值,再次调用时从暂停处继续。
def gen_numbers(): yield 1 yield 2 g = gen_numbers() print(next(g)) # 输出:1 print(next(g)) # 输出:2lambda:定义匿名函数,语法简洁,仅能包含一个表达式,返回表达式结果,常用于临时需求。
mul = lambda x, y: x * y print(mul(3, 4)) # 输出:12global:在函数内部声明变量为全局变量,可修改全局作用域中的变量值。
x = 10 def modify_x(): global x x = 20 modify_x() print(x) # 输出:20
三、类型与作用域关键字(6个)
此类关键字用于声明变量类型、控制作用域、定义空值等。
None:表示空值,是 Python 中的单例对象,用于表示“无”(区别于 0、空字符串),判断时用 is None。
result = None if result is None: print("无结果") # 输出:无结果True:布尔值之一,表示“真”,常用于条件判断、逻辑运算。
False:布尔值之一,表示“假”,与 True 对应,是逻辑运算的基础值。
is_ok = True if is_ok: print("操作成功") # 输出:操作成功nonlocal:在嵌套函数中声明变量为非局部变量,引用外层嵌套函数的变量(非全局)。
def outer(): x = 10 def inner(): nonlocal x x = 20 inner() print(x) # 输出:20 outer()int:整数类型,用于声明变量为整数类型(可省略,Python 为动态类型),也可作为类型转换函数。
num: int = 5 # 类型标注 print(int("10")) # 类型转换,输出:10float:浮点数类型,类似 int,可用于类型标注和类型转换(表示小数或科学计数法数值)。
price: float = 9.9 print(float("3.14")) # 输出:3.14
四、异常处理关键字(4个)
此类关键字用于捕获、抛出异常,处理程序运行中的错误。
try:包裹可能发生异常的代码块,后续搭配 except、finally 处理异常。
except:捕获 try 块中发生的指定异常,执行异常处理逻辑,可捕获多个异常。
try: 1 / 0 except ZeroDivisionError: print("除数不能为0") # 输出:除数不能为0finally:与 try 搭配,无论 try 块是否发生异常,finally 块代码都会执行(常用于资源释放)。
try: 1 / 0 except ZeroDivisionError: print("异常发生") finally: print("程序结束") # 输出:异常发生 程序结束raise:主动抛出异常,可指定异常类型和提示信息,用于自定义异常场景。
age = 15 if age < 18: raise ValueError("年龄必须大于等于18") # 抛出异常
五、其他特殊关键字(5个)
此类关键字用于模块管理、异步编程、装饰器等特殊场景。
with:上下文管理器,用于简化资源(文件、网络连接)的获取和释放,自动执行 enter() 和 exit() 方法。
with open("test.txt", "r") as f: content = f.read() # 自动关闭文件,无需手动调用 close()async(Python 3.5+):用于定义异步函数(async def)或异步上下文管理器,支持异步编程。
import asyncio async def async_task(): print("异步任务执行") asyncio.run(async_task()) # 输出:异步任务执行await(Python 3.5+):在异步函数中暂停执行,等待异步对象(如协程)完成,返回结果后继续执行。
async def wait_task(): await asyncio.sleep(1) print("等待1秒后执行") asyncio.run(wait_task())del:删除对象(变量、列表元素、字典键值对等),释放内存(实际触发垃圾回收机制)。
lst = [1,2,3] del lst[1] # 删除列表第二个元素 print(lst) # 输出:[1,3]assert:断言语句,用于调试阶段验证条件是否为 True,若为 False 则抛出 AssertionError 异常(生产环境可关闭)。
assert 2 + 2 == 4 # 条件成立,无异常 assert 2 + 2 == 5 # 抛出 AssertionError
六、关键字使用注意事项
关键字不可自定义命名:若将关键字用作变量名,会报 SyntaxError 错误(如
if = 10无效)。区分关键字与内置函数:如 int、float 既是关键字(类型标注),也是内置函数,需根据场景使用。
版本兼容性:部分关键字(如 match、case、async、await)仅在特定 Python 版本后支持,需注意环境适配。
通配符 _ 的特殊性:虽在 match-case 中作为关键字,但可作为普通变量名(常用于表示无关变量),建议避免滥用。
通过以上分类,可快速理清 Python 关键字的功能和用法。实际编程中,需熟练掌握各类关键字的场景,结合语法规则灵活运用,同时规避命名冲突,提升代码规范性和可读性。