Python ≥3.10版本中是否可通过结构模式匹配实现不等式匹配?
结构模式匹配实现不等式匹配的方法
你给出的直接在case后写< 42/== 42这类比较表达式的简写写法,Python目前并不支持,不过可以借助结构模式匹配的守卫条件实现完全相同的效果:
match a: case _ if a < 42: print('Less') case 42: print('The answer') case _ if a > 42: print('Greater')
上述代码里的_是通配符,可以匹配任意输入值,紧随其后的if子句就是守卫条件,只有条件判断为真时才会触发当前分支的逻辑。对于等值匹配的场景,直接写case 42:比加守卫的写法要更简洁,也符合模式匹配的设计习惯。
这种写法也支持更复杂的结构匹配+不等式判断的组合场景,比如匹配字典内指定字段的取值范围:
match goods_info: case {"price": price, "stock": stock} if price < 100 and stock > 0: print("符合低价有货的筛选条件")
内容的提问来源于stack exchange,提问作者gustafbstrom
相关产品推荐
相关产品推荐

