player-none 发表于 2026-7-4 12:38:49

卧槽 python3.10就加了这个 我还不知道

def switch(choice):
    match choice:
      case 'a':
            print("Case A")
      case 'b':
            print("Case B")
      case _:
            print("Default Case")

https://www.runoob.com/python3/python-match-case.html

FishC 发表于 2026-7-4 12:39:04

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

下面帮你梳理几个要点:

1. 基础语法

match value:
    case pattern1:
      # 匹配 pattern1 时执行
    case pattern2:
      # 匹配 pattern2 时执行
    case _:
      # 默认分支(类似 else)

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

2. 它比 if-elif 强在哪?

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

3. 经典示例:拆解列表

def process(data):
    match data:
      case :
            print(f"两个元素: {first}, {second}")
      case :
            print(f"开头: {first}, 剩下: {rest}")
      case []:
            print("空列表")
      case _:
            print("其他")

这里 用星号捕获剩余部分,非常直观。

4. 注意事项

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

yinda_peng 发表于 2026-7-14 12:40:06

好事啊,还不用写break了

某一个“天” 发表于 2026-7-26 22:36:21

对的,而且还有更高级的功能

player-none 发表于 2026-7-27 12:24:00

某一个“天” 发表于 2026-7-26 22:36
对的,而且还有更高级的功能

啥呀

某一个“天” 发表于 2026-7-27 16:51:08

player-none 发表于 2026-7-27 12:24
啥呀

就是A i说的守卫条件
页: [1]
查看完整版本: 卧槽 python3.10就加了这个 我还不知道