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 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.")
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.")
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 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}.")
| 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. |
