The “match case” statement is a feature introduced in Python 3.10 (released in October 2021) to provide pattern-matching capabilities. It allows you to perform structural pattern matching, where you can compare the structure of a value against different patterns and execute corresponding code based on the match.
Pattern matching is a powerful programming concept that simplifies code by allowing you to handle different cases or structures of data in a more concise and readable way.
Here’s the basic syntax of the match case statement:
match value:
case pattern_1:
# Code to execute if pattern_1 matches
case pattern_2 if condition:
# Code to execute if pattern_2 matches and condition is True
case pattern_3 as variable:
# Code to execute if pattern_3 matches and bind to 'variable'
case _:
# Code to execute if no patterns match
Note: the “match case” statement was introduced in Python 3.10, so you’ll need to use Python 3.10 or a later version to use this feature.
Python Match Case Statement Example
Here’s an example usage of the match case statement:
def classify_age(age):
match age:
case 0:
return "Newborn"
case n if 1 <= n <= 12:
return "Child"
case n if 13 <= n <= 19:
return "Teenager"
case n if n >= 20:
return "Adult"
case _:
return "Invalid age"
print(classify_age(5)) # Output: "Child"
print(classify_age(15)) # Output: "Teenager"
print(classify_age(30)) # Output: "Adult"
print(classify_age(-5)) # Output: "Invalid age"
Output:
Let’s imagine a simple program that processes different shapes and calculates their areas based on the given data.
from math import pi
def calculate_area(shape):
match shape:
case "circle", radius:
return pi * radius ** 2
case "rectangle", width, height:
return width * height
case "triangle", base, height:
return 0.5 * base * height
case _:
return "Invalid shape"
# Calculate areas
print(calculate_area(("circle", 5))) # Output: 78.53981633974483
print(calculate_area(("rectangle", 3, 4))) # Output: 12
print(calculate_area(("triangle", 6, 8))) # Output: 24.0
print(calculate_area(("square", 5))) # Output: Invalid shape
def evaluate_expression(expr):
match expr:
case "add", a, b:
result = a + b
case "subtract", a, b:
result = a - b
case "multiply", a, b:
result = a * b
case "divide", a, b:
result = a / b
case _:
result = "Invalid operation"
return result
print(evaluate_expression(("add", 5, 3))) # Output: 8
print(evaluate_expression(("subtract", 10, 4))) # Output: 6
print(evaluate_expression(("divide", 20, 5))) # Output: 4.0
print(evaluate_expression(("modulus", 7, 2))) # Output: Invalid operation
Note: IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.