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("差")

输出:

优秀

解释

  1. match True::匹配目标写True,后面case守卫条件 if 判断分数,用来替代多分支 if。
  2. case __通配符,匹配任意值,相当于 if-else 的最后 else。
  3. 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 的区别小结

  1. if:侧重布尔条件判断
  2. match:侧重结构匹配 + 值匹配 + 变量绑定,适合匹配元组、列表、对象结构。
  3. 单纯多个数值判断,用if elif更简单;匹配数据结构时,match优势巨大。

 

posted @ 2026-09-16 15:58  emanlee  阅读(6)  评论(0)    收藏  举报