如何在Python 3.10中的Match(其他语言中切换)cases中使用多个case

问题描述 投票:0回答:2

我正在尝试在类似于下面所示的函数中使用多个案例,以便我能够使用 python 3.10 中的匹配案例来执行多个案例

def sayHi(name):
    match name:
        case ['Egide', 'Eric']:
            return f"Hi Mr {name}"
        case 'Egidia':
            return f"Hi Ms {name}"
print(sayHi('Egide'))

即使我删除了方括号,这也只是返回

None
而不是消息。

python switch-statement match python-3.10
2个回答
97
投票

根据 Python 3.10 的新增功能PEP 636,以及 文档, 您在模式之间使用

|

case 'Egide' | 'Eric':

17
投票

您可以使用

|
)将
['Egide', 'Eric']
替换为
'Egide' | 'Eric'
,但您也可以使用 guard 来匹配属于可迭代对象或容器的元素,如下所示:

CONSTANTS = ['a','b', ...] # a (possibly large) iterable

def demo(item):
    match item:
        case item if item in CONSTANTS:
            return f"{item} matched"
        case _:
            return f"No match for {item}"
© www.soinside.com 2019 - 2024. All rights reserved.