How to use multiple cases in Match (switch in other languages) cases in Python 3.10

Question:

I am trying to use multiple cases in a function similar to the one shown below so that I can be able to execute multiple cases using match cases in 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'))

This is just returning None instead of the message, even if I remove square brackets.

Asked By: Egidius

||

Answers:

According to
What’s New In Python 3.10,
PEP 636, and
the docs,
you use a | between patterns:

case 'Egide' | 'Eric':
Answered By: khelwood

You can use | (or) to replace ['Egide', 'Eric'] with 'Egide' | 'Eric', but you can also match elements belonging to iterables or containers with a guard, as follows:

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

def demo(item):
    match item:
        case item if item in CONSTANTS:
            return f"{item} matched"
        case other:
            return f"No match for {item}"
Answered By: Blake