从Python 3.10开始引入match语句,用于替代复杂的if-elif链,提升代码可读性。其语法为match变量后跟多个case分支,支持值匹配、结构解构与条件守卫。例如可匹配字符串命令或坐标元组,并通过通配符_处理默认情况。还能结合if条件判断状态码范围,适用于解析输入、处理API响应等场景。使用时需注意模式顺序,具体模式应优先于通用模式。

从Python 3.10版本开始,官方引入了
match语句——一种全新的控制流结构,用来替代复杂的
if-elif-else链。它借鉴了其他语言中的“模式匹配”(pattern matching)思想,让代码更清晰、易读、结构化。本文专为初学者设计,带你一步步掌握
match语句的基本用法和常见场景。
什么是match语句?
match语句根据一个变量的值或结构,尝试与多个预设的“模式”进行匹配,并执行对应的操作。它的语法类似于其他语言中的switch-case,但功能更强大。
基本语法如下:
match 变量:
case 模式1:
执行代码1
case 模式2:
执行代码2
case _:
默认操作
其中
_表示“通配符”,相当于默认分支,处理所有未匹配的情况。
立即学习“Python免费学习笔记(深入)”;
基础用法:匹配简单值
最简单的场景是匹配整数、字符串等固定值。比如,模拟一个命令行菜单:
command = "start"
match command:
case "start":
print("启动程序")
case "stop":
print("停止程序")
case "restart":
print("重启程序")
case _:
print("无效命令")
输出结果为:
启动程序。如果
command是"help",则会进入
_分支,打印“无效命令”。
匹配多种类型和结构
match不仅能匹配单个值,还能解构数据结构,如元组、列表等。
例如,处理坐标点:
point = (2, 5)
match point:
case (0, 0):
print("原点")
case (x, 0):
print(f"在X轴上,x={x}")
case (0, y):
print(f"在Y轴上,y={y}")
case (x, y):
print(f"普通点,坐标为({x}, {y})")
这段代码会输出:
普通点,坐标为(2, 5)。注意,模式中使用了变量
x和
y,它们会自动绑定到对应位置的值。
还可以添加条件判断,使用
if进行守卫(guard):
status_code = 404
match status_code:
case code if code < 200:
print("信息响应")
case code if code < 300:
print("成功")
case code if code < 400:
print("重定向")
case code if code < 500:
print("客户端错误")
case code if code < 600:
print("服务器错误")
这适合处理连续范围的数值,逻辑清晰,避免冗长的if判断。
实际应用场景建议
match语句特别适合以下几种情况:
- 解析用户输入或命令
- 处理API返回的状态码或消息类型
- 解构复杂的数据结构(如嵌套元组)
- 替代多层if-elif判断,提升可读性
不过要注意,
match仅适用于Python 3.10及以上版本。如果你的环境版本较低,需要先升级解释器。
基本上就这些。掌握
match语句后,你的代码会变得更简洁、直观。刚开始可能不太习惯,但一旦用熟,就会发现它比传统写法更优雅。不复杂但容易忽略的是模式顺序——越具体的模式应放在前面,避免被通配模式提前捕获。










