Python 中是否可以使用条件语句作为匹配语句的情况?
工作是这样的:
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
match test:
case if test in makes:
print(True)
case _:
print(False)
我知道 match/case 并不是在寻找具有布尔值 True 的东西,但这似乎对于缩放事物很有用。
我尝试将其作为函数来执行,以便您可以返回完全匹配的结果:
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
def return_bool(item, lists):
if item in lists:
return item
else:
return 'notmatching'
match test:
case return_bool(test, makes):
print(True)
case _:
print(False)
这也行不通。我认为它期待一个格式输出,比如str(x)
.
正如评论指出的那样,您提供的代码似乎更适合if/elif
, however它可以实现,因为match
支持所谓的“保护条款”。
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
match test:
case test if test in makes:
print(True)
case _:
print(False)
即使在以下情况下这也有效makes
不是一个固定的顺序。如果makes
实际上只是固定序列的替代品,那么你也可以使用
test = 'Aston Martin'
match test:
case 'Aston Martin' | 'Bentley':
print(True)
case _:
print(False)
请注意,您cannot do this
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
match test:
case makes:
print(True)
case _:
print(False)
因为这总是匹配第一种情况,覆盖makes
with test
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)