https://docs.python.org/3/tutorial/controlflow.html#match-statements
https://docs.python.org/3/reference/compound_stmts.html#match
PEP 634 - Structural Pattern Matching: Specification
PEP 636 - Structural Pattern Matching: Tutorial
https://learnpython.com/blog/python-match-case-statement/
A match statement takes an expression and compares its value to successive patterns given as one or more case blocks. This statement was introduced in Python 3.10. Note that match and case words are described as soft keywords, meaning they only work as keywords in a match statement.
# The simplest form of a 'match' statement.
def http_error(status, flag=False):
match status: # header line
case 400:
return "Bad request"
case 401 | 403 | 404: # several literals can be combined using |
return "Not allowed"
case 404:
return "Not found"
case 418 if flag: # using a guard
return "I'm a teapot"
case _: # optional, never fails to match
return "Something's wrong with the internet"
# if-else version.
def http_error(status, flag=False):
if status == 400:
return "Bad request"
elif status == 401 or status == 403 or status == 404:
return "Not allowed"
elif status == 404:
return "Not found"
elif status == 418 and flag: # using a guard
return "I'm a teapot"
else:
return "Something's wrong with the internet"