match case | Lập trình Python

DevNotes
By -
0


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)
[/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 = 4
match 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 = 10
match x:
case x if x > 0:
print("Số dương")
case x if x < 0:
print("Số âm")
case _:
print("Số 0")
[/code]

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]
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

Đăng nhận xét

0 Nhận xét

Đăng nhận xét (0)
3/related/default