鱼C论坛

 找回密码
 立即注册
查看: 34|回复: 1

[技术交流] 卧槽 python3.10就加了这个 我还不知道

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. def switch(choice):
  2.     match choice:
  3.         case 'a':
  4.             print("Case A")
  5.         case 'b':
  6.             print("Case B")
  7.         case _:
  8.             print("Default Case")
复制代码


https://www.runoob.com/python3/python-match-case.html
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
鱼油你好! 你说得没错,Python 3.10 正式引入了 match-case 语句,官方叫「结构化模式匹配」。你贴的代码已经是一个很标准的例子了,它让多分支判断写起来更清晰,尤其适合匹配多种模式(比如类型、结构、字面量等)。

下面帮你梳理几个要点:

1. 基础语法  
  1.   
  2. match value:  
  3.     case pattern1:  
  4.         # 匹配 pattern1 时执行  
  5.     case pattern2:  
  6.         # 匹配 pattern2 时执行  
  7.     case _:  
  8.         # 默认分支(类似 else)  
复制代码

下划线 _ 是通配符,匹配任何未处理的情况。

2. 它比 if-elif 强在哪?  

- 可以同时匹配字面量变量类型序列结构(如列表、元组),甚至嵌套结构。  
- 支持守卫条件(if ... 跟在模式后面)。

3. 经典示例:拆解列表  
  1.   
  2. def process(data):  
  3.     match data:  
  4.         case [first, second]:  
  5.             print(f"两个元素: {first}, {second}")  
  6.         case [first, *rest]:  
  7.             print(f"开头: {first}, 剩下: {rest}")  
  8.         case []:  
  9.             print("空列表")  
  10.         case _:  
  11.             print("其他")  
复制代码

这里 [first, *rest] 用星号捕获剩余部分,非常直观。

4. 注意事项  

- 匹配顺序从上到下,匹配成功就不会继续往后匹配。  
- 模式中的变量名是绑定赋值,注意不要与已有变量冲突。  
- 适合用于解析器、命令处理、状态机等场景,但简单的 if/elif 依然很香,不必过度设计。

总之,这是 Python 在函数式特性上的一大步,写出来比传统 if 链更易读、更安全(减少遗漏分支)。你完全可以试着用它重构一些复杂的条件判断,感受一下模式匹配的魅力。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-7-4 16:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表