Pattern matching: match/case
Switch-case modern Python 3.10+ dengan destructuring.
Pahami konsepnya
match/case adalah switch-case modern Python (3.10+): satu nilai menghadapi banyak pola. Bedanya dari switch klasik: pola bisa berupa literal (case 200:), tipe (case int():), sequence (case [x, y]:), dict (case {"nama": n}:), bahkan guard (case n if n > 100:). Penulisan case int: justru menangkap nilai ke variabel bernama int, bukan menguji tipe.
Destructuring adalah kunci: case [aksi, nilai]: memecah list dua elemen langsung ke variabel. Ini menggantikan if/elif panjang untuk command dispatch — case "tambah":, case "hapus": lebih terbaca.
Pola bisa digabung dengan | (or): case 200 | 201 | 202: cocok untuk salah satu. Wildcard _ menampung sisanya. Tidak ada fallthrough — tiap case berdiri sendiri seperti yang diharapkan.
Coba contoh kode
def proses(perintah):
match perintah:
case ["tambah", x, y]:
return x + y
case ["kurang", x, y]:
return x - y
case ["info", nama] if len(nama) > 2:
return f"Halo {nama}"
case _:
return "Tidak dikenal"
print(proses(["tambah", 3, 5])) # 8
print(proses(["kurang", 10, 4])) # 6
print(proses(["info", "Ari"])) # Halo Ari
print(proses(["hapus"])) # Tidak dikenalDestructuring ["tambah", x, y] memecah list dan mengikat x, y langsung; guard if len(nama) > 2 menyaring pola info. Wildcard _ menampung sisanya. Ini jauh lebih terbaca daripada if/elif berantai dengan indexing manual.
Latihan singkat
Uji: match ["tambah",10,20]→`30`; ["kurang",10,20]→`-10`.