Từ Python 3.10 trở lên thì match được ra mắt và có lối viết có nghĩa giống như là switch case trong các ngôn ngữ như C# hoặc JavaScript
Cú pháp:
[code lang="python"]
match variable:
case pattern1:
# code block
case pattern2:
# code block
case _:
# mặc định (giống else)
match variable:
case pattern1:
# code block
case pattern2:
# code block
case _:
# mặc định (giống else)
[/code]
Ví dụ mẫu:
[code lang="python"]
error_code = "002"match error_code:
case "000":
print("Bình thường")
case "001":
print("Lỗi cú pháp")
case _:
print("Chưa rõ nguyên nhân")
[/code]
Kết quả sẽ là: Chưa rõ nguyên nhân
Sử dụng match với nhiều giá trị
[code lang="python"]
number = 4match number:
case 0 | 2 | 4:
print("Số chẵn")
case 1 | 3 | 5:
print("Số lẻ")
case _:
print("Hãy nhập trong khoảng 0-5")
[/code]
Kết quả: nếu bạn nhập 0 2 hoặc 4 thì báo số chẵn. Nhập 1,3,5 thì báo số lẻ
Kết hợp match với điều kiện if
[code lang="python"]
x = 10match x:
case x if x > 0:
print("Số dương")
case x if x < 0:
print("Số âm")
case _:
print("Số 0")
[/code]
match point:
case (0, y):
print(f"Trục Y là {y}")
case (x, 0):
print(f"Trục X là {x}")
case (x, y):
print(f"Toạ độ là ({x} {y})")
Kết quả là: Số dương
Kết hợp với (Tuples, Lists, Dicts)
[code lang="python"]
point = (0, 10)match point:
case (0, y):
print(f"Trục Y là {y}")
case (x, 0):
print(f"Trục X là {x}")
case (x, y):
print(f"Toạ độ là ({x} {y})")
[/code]
Kết quả : Trục Y là 10
Ví trong đoạn code trên chúng ta có điểm giống nhau ở case đầu tiên là số
và sau đó nó sẽ tự nhận dạng y
[code lang="python"]
numbers = [1, 2, 3]match numbers:
case [1, 2, 3]:
print("Trùng khớp hoàn toàn")
case [1, *rest]:
print(f"Bắt đầu 1, phần còn lại là = {rest}")
[/code]
match person:
case {"name": name, "age": age}:
print(f"{name} is {age} years old")
case _:
print("Unknown person")
Kết quả nếu:
numbers = [1, 2, 3] sẽ cho ra : Trùng khớp hoàn toàn
numbers = [1, 2, 3] sẽ cho ra : Bắt đầu 1, phần còn lại là = [2, 4]
[code lang="python"]
person = {"name": "Alice", "age": 25}match person:
case {"name": name, "age": age}:
print(f"{name} is {age} years old")
case _:
print("Unknown person")
[/code]
Kết quả: Alice is 25 years old
Kết hợp match và class
class Person:def __init__(self, name, age):
self.name = name
self.age = age
[code lang="python"]
p = Person("DevNotes", 25)
match p:
case Person(name="DevNotes", age=age):
print("You are DevNotes")
case Person(name="Alice", age=20):
print("You are Alice")
case _:
print("Unknown person !")
[/code]
Kết quả: You are DevNotes