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"
matchrole: 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
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
matchtemp: casetift>30: print("It's a heatwave! Stay hydrated.") casetift<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)
matchpoint: 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}.")