What is the Python equivalent for a case/switch statement?
What is the Python equivalent for a case/switch statement?
What is the Python equivalent for a case/switch statement?
Python 3.10 and above
In Python 3.10, they introduced the pattern matching.
Example from the Python documentation:
def http_error(status):
match status:
case 400:
return Bad request
case 404:
return Not found
case 418:
return Im a teapot
case _:
return Somethings wrong with the internet
Before Python 3.10
While the official documentation are happy not to provide switch, I have seen a solution using dictionaries.
For example:
# define the function blocks
def zero():
print You typed zero.n
def sqr():
print n is a perfect squaren
def even():
print n is an even numbern
def prime():
print n is a prime numbern
# map the inputs to the function blocks
options = {0 : zero,
1 : sqr,
4 : sqr,
9 : sqr,
2 : even,
3 : prime,
5 : prime,
7 : prime,
}
Then the equivalent switch block is invoked:
options[num]()
This begins to fall apart if you heavily depend on fall through.
The direct replacement is if
/elif
/else
.
However, in many cases there are better ways to do it in Python. See Replacements for switch statement in Python?.