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
相关产品推荐
相关产品推荐

