5 python case match python-3.10
Python 中是否可以使用条件语句作为匹配语句的情况?
工作是这样的:
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
match test:
case if test in makes:
print(True)
case _:
print(False)
Run Code Online (Sandbox Code Playgroud)
我知道 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)
Run Code Online (Sandbox Code Playgroud)
这也行不通。我认为它期待一个格式输出,例如str(x).
正如评论指出的那样,您提供的代码似乎更适合if/elif,但是它可以完成,因为match支持所谓的“保护子句”。
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
match test:
case test if test in makes:
print(True)
case _:
print(False)
Run Code Online (Sandbox Code Playgroud)
makes即使在不是固定顺序的情况下,这也有效。如果makes确实只是固定序列的替代品,那么您也可以使用
test = 'Aston Martin'
match test:
case 'Aston Martin' | 'Bentley':
print(True)
case _:
print(False)
Run Code Online (Sandbox Code Playgroud)
请注意,您不能执行此操作
test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']
match test:
case makes:
print(True)
case _:
print(False)
Run Code Online (Sandbox Code Playgroud)
因为这将始终与第一种情况匹配,makes并用 覆盖test。
| 归档时间: |
|
| 查看次数: |
12339 次 |
| 最近记录: |