【发布时间】:2022-10-18 06:02:52
【问题描述】:
是否可以将条件语句作为 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 -
我认为您正在尝试将结构模式匹配用于看起来更像 if、elif 和 else 的情况。
-
与其根据类似陈述在其他语言中的工作方式进行猜测,不如阅读PEP,实际上描述这个怎么运作。
-
return_bool(test, makes)是一个类模式,它将尝试将test与名为return_bool的类的实例进行匹配。它不是产生要匹配的布尔值的函数调用。
标签: python match case python-3.10