Python Match
Python’s
match statement (introduced in version 3.10) is a powerful tool often called Structural Pattern Matching. Think of it as a much smarter and more readable version of a long list of “if-else” statements. It doesn’t just check if one thing equals another; it looks at the “shape” of your data to decide what to do.The Basic Match
The Basic Match is the simplest way to use this feature. It takes a single variable and compares it against several specific values. It’s like a key-cutter machine that tries different pre-made molds until it finds the one that fits your key perfectly.
- When to use it: When you have one variable that could be one of many specific things (like a command or a status code).
# Checking a user's role to give them access
role = "Admin"
match role:
case "Admin":
print("You have full access to everything.")
case "Editor":
print("You can edit posts but not delete them.")
case "Guest":
print("You can only view the content.")
The Wildcard Match
In a match statement, the Wildcard (written as an underscore
_) acts as a “catch-all” for anything that wasn’t mentioned in the other cases. It is the backup plan that ensures your program doesn’t get confused if it receives an unexpected or weird input.- When to use it: Always put this at the very end of your match block to handle errors or “everything else” scenarios.
# Handling a simple menu choice
choice = 99 # A choice that doesn't exist
match choice:
case 1:
print("Opening Settings...")
case 2:
print("Starting Game...")
case _:
print("Invalid choice. Please try again.")
Match Guards
A Match Guard is an extra “if” statement added to a case. It allows the match to happen only if a specific secondary condition is also true. It’s like a security guard who only lets you into a club if you have an ID and you are wearing the right shoes.
- When to use it: When the value matches, but you need to check a logic rule (like a number being greater than 10) before running the code.
# Checking a temperature with an extra rule
temp = 35
match temp:
case t if t > 30:
print("It's a heatwave! Stay hydrated.")
case t if t < 0:
print("Watch out for ice.")
case _:
print("The weather is mild.")
Sequence Matching
Sequence Matching allows the code to look inside a list or a tuple to see if it follows a specific structure. It can check how many items are in the list and even assign those items to new variables automatically, making it very easy to unpack data.
- When to use it: When you are dealing with coordinates, names, or any data that comes in a specific group or order.
# Checking a simple (x, y) coordinate
point = (0, 10)
match point:
case (0, 0):
print("You are at the center.")
case (0, y):
print(f"You are on the vertical axis at {y}.")
case (x, 0):
print(f"You are on the horizontal axis at {x}.")
Comparison Table: Match vs. If-Else
| Feature | match Statement | if-else Statement |
| Readability | Very clean; looks like a list of options. | Can become messy with many “elif” blocks. |
| Efficiency | Optimized for checking patterns quickly. | Checks every condition one by one. |
| Capability | Can “unpack” lists and check data shapes. | Mostly used for simple True/False math. |
| Versatility | Best for complex data structures. | Best for simple, quick logic checks. |
