当前位置: 首页 > news >正文

【Python 语法糖小火锅 · 第 5 涮 · 完结】

一、糖味一句话

Python 3.10+ 的 match-case 把「类型 + 值 + 嵌套」一次性拆开,
可读性 ×10,bug 数 ÷10,if-elif 可以安心退休了。


二、1 行示例 3 连发

# ① 值匹配
match status:case 200: msg = "ok"case 404: msg = "not found"case _:   msg = "unknown"# ② 结构匹配 + 守卫
match data:case {"name": str(n), "age": int(a)} if a >= 18:print(f"Adult {n}")case {"name": n}:           # 只关心 key,不关心类型print(f"Minor {n}")# ③ 序列匹配带星号
match cmd:case ["copy", src, dst]:shutil.copy(src, dst)case ["move", *files, dst]:for f in files: shutil.move(f, dst)

三、真实场景:JSON API 响应秒解析

需求:根据返回体结构做不同处理。

import requests, sysresp = requests.get(sys.argv[1]).json()match resp:case {"status": "ok", "data": list(items)}:print("Got", len(items), "items")case {"status": "error", "message": str(msg)}:print("Error:", msg)case _:print("Unknown format")

无需层层 if "status" in resp and isinstance(...)


四、防踩坑小贴士

  1. match 从上到下短路匹配,顺序即优先级。
  2. _ 作通配符,但别把它当变量再用,会覆盖。
  3. 模式里的变量名会绑定到作用域,注意命名冲突。
  4. 低于 3.10 的环境无法使用,需回退到 if-elif。

记忆口令 :“match 拆结构,case 当分支;下划线兜底,守卫加条件。”

http://www.dtcms.com/a/322227.html

相关文章:

  • 使用小诺框架报错:NoResourceFoundException: No static resource exercise/tag/page.
  • Go语言接口实战指南
  • VS Git巨坑合并分支失败导致多项无关改变
  • HarvardX TinyML小笔记1(番外2:神经网络)
  • ESP32之wifi_HTTP
  • 从 AI 到实时视频通道:基于模块化架构的低延迟直播全链路实践
  • 大语言模型提示工程与应用:前沿提示工程技术探索
  • spring的知识点:容器、AOP、事物
  • 安全引导功能及ATF的启动过程(四)
  • AI赋能品牌出海,特区典范引领未来 第十九届中国品牌节·国际品牌博览会在深开幕
  • 使用 ast-grep 精准匹配指定类的方法调用(以 Java 为例)
  • [GESP2023012 五级] 2023年12月GESP C++五级上机题题解,附带讲解视频!
  • 95、【OS】【Nuttx】【构建】cmake 配置实操
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘transformers’问题
  • FreeRTOS---基础知识5
  • Dixon‘s 因子分解法——C语言实现
  • KLA/TENCOR ALTAIR 8900
  • [Shell编程] Shell 循环结构入门
  • VMware使用NAT模式,使本机与虚拟机在不同的网络,并且虚拟机可以上网
  • 洛谷 P1433 吃奶酪-普及+/提高
  • 嵌入式第二十三课 !!!树结构与排序(时间复杂度)
  • 浅试A2A
  • 01数据结构-图的概念和图的存储结构
  • PCA多变量离群点检测:Hotelling‘s T2与SPE方法原理及应用指南
  • ABP VNext + Fody AOP:编译期织入与性能监控
  • 嵌入式学习 day47 LED
  • ctfshow_萌新web9-web15-----rce
  • AJAX与axios框架
  • Vuex 数据共享
  • v-model双向绑定指令