如何在match语句中合并多个case值?
简化Python match-case多值匹配的方法
你想要的这种合并多个case的写法,Python模式匹配里不支持用逗号分隔(逗号会被解析为匹配元组,比如case 2,3会匹配value等于(2,3)这个元组,而非单个值匹配2或3),但有两种简洁的实现方式:
方式一:使用管道符|(或模式)
这是Python 3.10+模式匹配原生支持的语法,直接用|把多个值模式连起来:
match value: case 2 | 3 | 5 | 7 | 11 | 13 | 17 | 19: print('It is prime!') case _: print('It is not prime')
注意default是早期写法,Python官方推荐用_作为默认匹配项。
方式二:使用守卫条件(Guard)
如果要匹配的值数量较多,把它们放进集合里,用if守卫判断是否在集合中:
PRIMES = {2, 3, 5, 7, 11, 13, 17, 19} match value: case x if x in PRIMES: print('It is prime!') case _: print('It is not prime')
这种方式更适合值数量多的场景,后期维护也更方便。
内容的提问来源于stack exchange,提问作者Noji
相关产品推荐
相关产品推荐

