You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.10的match语句(其他语言称switch)如何实现多case匹配?

问题原因

你写的原始代码存在两个核心问题:

  • 第一个case写的['Egide', 'Eric']是匹配长度为2、元素依次为'Egide'和'Eric'的列表,你传入的是字符串类型的'Egide',类型和结构都不匹配,无法命中该分支
  • 所有case都没有命中的情况下,Python函数会默认返回None,所以输出结果不符合预期
    如果直接移除方括号写成case 'Egide', 'Eric':会触发语法错误,这是因为match语句的多case匹配语法和普通if判断的规则不一样。
正确实现方案

Python的match语句用|符号分隔多个匹配值,就能实现同一逻辑匹配多个值的需求,修改后的代码如下:

def sayHi(name):
    match name:
        case 'Egide' | 'Eric':
            return f"Hi Mr {name}"
        case 'Egidia':
            return f"Hi Ms {name}"
        # 可选补充兜底分支,避免未匹配到任何值时返回None
        case _:
            return f"Hi {name}"
print(sayHi('Egide')) # 输出 Hi Mr Egide
  • 这里的|是match语句专属的多模式匹配运算符,左右两边可以是任意合法的匹配模式
  • 补充兜底的case _可以覆盖所有未提前定义的匹配场景,逻辑更稳妥

内容的提问来源于stack exchange,提问作者Egidius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:45:04