如何在Python中合并带guard的两个match匹配模式并避免代码重复
合并Python match case中带Guard的重复分支方案
针对多个带guard条件的case需要执行相同代码块的场景,有两种无需重构函数的优雅实现方式:
方式一:组合元组直接匹配
将var1和var2组合成元组作为匹配对象,直接用|连接所有符合要求的(枚举值, var2值)组合,这是最直观且符合match语法设计的方案:
match (var1, var2): case (enum.A, 1) | (enum.B, 2): {code block} # 其他分支 case _: pass
方式二:在Guard中批量校验条件
如果不想改变匹配对象,也可以在单个case的guard里用集合批量校验组合条件:
match var1: case enum.A | enum.B if (var1, var2) in {(enum.A, 1), (enum.B, 2)}: {code block} # 其他分支 case _: pass
两种方式都能避免重复编写代码块,其中方式一的可读性更强,推荐优先使用。
内容的提问来源于stack exchange,提问作者VisioN
相关产品推荐
相关产品推荐

