match
Statement in Python introduced in Python 3.10
The match
statement allows you to compare a variable against different patterns and execute corresponding code blocks. much like the switch
statement in other languages.
match
: Used to compare the variable against different patterns.case
: Each potential pattern the variable could match._
: The wildcard pattern, acting as a default case if no other pattern matches.
This feature is useful for matching complex data structures and handling various cases in a more readable way than using multiple if
statements.
Syntax:
python
match variable:
case pattern1:
# block of code if pattern1 matches
case pattern2:
# block of code if pattern2 matches
case _:
# block of code if no pattern matches (default case)
Example:
python
name = input("What is your name? ")
match name:
case "Harry":
print("Gryffindor")
case "Hermione":
print("Gryffindor")
case "Draco":
print("Slytherin")
case _: # Default case
print("Who?")
Gryffindor (if the name is Harry or Hermione)
Slytherin (if the name is Draco)
Who? (if the name is something else)
Using the |
(OR) Operator in match
Cases
The |
(vertical bar) can be used to match multiple patterns (like an "OR" operator).
python
name = input("What is your name? ")
match name:
case "Harry" | "Hermione" | "Ron":
print("Gryffindor")
case "Draco":
print("Slytherin")
case _: # Default case
print("Who?")
Gryffindor (if the name is Harry, Hermione, or Ron)
Slytherin (if the name is Draco)
Who? (if the name is something else)
Matching Complex Data Structures
You can use match
to handle complex data structures, such as tuples:
python
def describe_shape(shape):
match shape:
case ("circle", radius):
print(f"A circle with radius {radius}")
case ("rectangle", width, height):
print(f"A rectangle with width {width} and height {height}")
case _:
print("Unknown shape")
describe_shape(("circle", 5))
describe_shape(("rectangle", 4, 7))
describe_shape(("triangle", 3))
# Output:
# A circle with radius 5
# A rectangle with width 4 and height 7
# Unknown shape