惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
Engineering at Meta
Engineering at Meta
M
MIT News - Artificial intelligence
Google DeepMind News
Google DeepMind News
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
小众软件
小众软件
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
博客园_首页
MyScale Blog
MyScale Blog
博客园 - 聂微东
V
Visual Studio Blog
The Cloudflare Blog
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42

博客园 - emanlee

Django3 核心入门知识点 HTML + CSS + JS 入门核心知识点 vs code 使用python,必须安装python解释器 Ubuntu 修改 ulimit‑n(nofile,最大打开文件数) 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 Word里打出“方框中间带勾”的符号 Windows 10/11 安装 MySQL 5.7 步骤(内部使用) Python编程语言的运行速度(CPU时间),与C语言对比 设置MySQL随操作系统Ubuntu启动 2026年秋季,2027年春季,西安理工大学 校历 博文阅读密码验证 - 博客园 Windows 11,用任务栏的搜索框搜索到一个软件,点击无法打开, 是bug 拆分视频的软件工具,Avidemux 开源免费 无法在此设备上加载驱动程序,可行可用 ubuntu 设置北京日期时间 mysql 在新电脑上导入,出现错误:ERROR at line 4019: Unknown command '\''. - emanlee 安装 yarn npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。 - emanlee VS code, 最近打开过哪些项目或文件夹,把这些备份下来,到另外一台电脑上恢复 傲梅分区助手 【好用】 ubuntu 可以使用Windows远程桌面连接吗?【可以】 把xshell的全部连接和密码,从一台Windows 10电脑,迁移到Windows11电脑。 Windows 远程桌面(mstsc)完整迁移方案(含历史连接记录、RDP 配置、保存的账号密码)【可行】 Endnote,如何能完整迁移库和模版 ubuntu 安装 locate
python match case , 给出简单示例,并给出解释
emanlee · 2026-09-16 · via 博客园 - emanlee

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优势巨大。