Python match case , 简单示例并解释
Python match-case(模式匹配)
⚠️ match-case 是 Python 3.10 及以上版本才支持的语法,类似其他语言的
switch-case,但功能更强,叫模式匹配。
示例 1:简单分数评级(对应你刚才 if 代码)
score = 88
match True:
case _ if score >= 85:
print("优秀")
case _ if 75 <= score < 85:
print("良好")
case _ if 60 <= score < 75:
print("中等")
case _:
print("差")
输出:
优秀
解释
match True::匹配目标写True,后面case用守卫条件if判断分数,用来替代多分支 if。case _:_是通配符,匹配任意值,相当于if-else的最后 else。case _ if 条件:这个if叫守卫(guard),只有条件成立才匹配成功。
这种写法只是模拟 if 多分支,match 真正强项不是单纯数值判断,而是解构匹配。
示例 2:简单值匹配(最像 switch)
status = 2
match status:
case 0:
print("待处理")
case 1:
print("处理中")
case 2:
print("已完成")
case _:
print("未知状态")
输出:
已完成
解释
match status::拿变量status去依次匹配下面case后的常量。- 从上往下匹配,匹配成功就退出,不会继续向下。
case _必须放最后,兜底所有其它值。
示例 3:match 特色:序列解构匹配(重点)
point = (10, 20)
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={x},y={y}")
输出:
普通点,坐标:x=10,y=20
解释
- 直接匹配元组结构,还能自动把元素绑定到变量 x,y,这是普通
if做不到的。 - 按顺序匹配,先匹配到哪个 case 就执行哪个。
match-case 和 if/elif 的区别小结
if:侧重布尔条件判断;match:侧重结构匹配 + 值匹配 + 变量绑定,适合匹配元组、列表、对象结构。- 单纯多个数值判断,用
if elif更简单;匹配数据结构时,match优势巨大。

浙公网安备 33010602011771号