Program
Jelajahi pernyataan match-case di Python, diperkenalkan pada Python 3.10, dan pelajari bagaimana structural pattern matching menghadirkan tingkat keanggunan dan kekuatan baru dalam pemrograman Python. Kita akan membahas sintaksnya, penerapannya dalam data science dan machine learning, serta perbandingannya dengan pernyataan switch-case tradisional di bahasa lain. Jika Anda baru mengenal Python, pastikan untuk melihat Python Cheat Sheet untuk Pemula.
Memahami Pernyataan Switch Case Tradisional
Sebelum Python 3.10, pengembang Python menggunakan banyak pernyataan if-elif-else atau kamus (dictionary) untuk meniru fungsionalitas switch case. Berikut contoh dasar menggunakan if-elif-else:
day = "Saturday"
if day == "Saturday" or day == "Sunday":
print(f"{day} is a weekend.")
elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]:
print(f"{day} is a weekday.")
else:
print("That's not a valid day of the week.")
# Saturday is a weekend.
Memperkenalkan Match dan Case di Python 3.10
Dengan hadirnya match-case, Python kini menawarkan fitur yang berakar pada structural pattern matching, sehingga Anda dapat menulis logika kondisional yang lebih bersih dan lebih kuat.
Apa itu Structural Pattern Matching?
Structural pattern matching, diperkenalkan dalam PEP 634, adalah cara mencocokkan dan mendestrukturisasi struktur data berdasarkan bentuk dan isinya. Ini lebih fleksibel daripada pencocokan nilai tradisional, memungkinkan pengembang bekerja dengan sequence, mapping, dan bahkan instance kelas kustom.
Sintaks Dasar Match-Case
Berikut contoh sederhana match-case yang sedang berjalan. Mari kategorikan hari dalam seminggu menjadi akhir pekan atau hari kerja:
day = "Monday"
# Match the day to predefined patterns
match day:
case "Saturday" | "Sunday":
print(f"{day} is a weekend.") # Match weekends
case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday":
print(f"{day} is a weekday.") # Match weekdays
case _:
print("That's not a valid day of the week.") # Default case
# Monday is a weekday.
Konsep kunci dalam contoh:
-
Pattern Matching dengan
case:-
case "Saturday" | "Sunday": Mencocokkan salah satu pola yang tercantum. Simbol|berfungsi seperti operator OR. -
case _: Kasus penampung (default) untuk menangani masukan yang tidak valid.
-
-
Tidak Perlu
break: Berbeda dengan switch-case tradisional, Python keluar dari blokmatchsetelah kecocokan pertama yang berhasil.
Perbandingan match-case vs if-elif-else
Pada tabel di bawah, Anda dapat melihat bagaimana kedua teknik tersebut dibandingkan:
| Fitur | if-elif-else | match-case |
|---|---|---|
| Diperkenalkan Pada | Tersedia sejak versi Python awal | Diperkenalkan di Python 3.10 |
| Sintaks | Menggunakan kata kunci if, elif, dan else | Menggunakan kata kunci match dan case |
| Keterbacaan | Dapat menjadi panjang dengan banyak kondisi | Lebih ringkas dan mudah dibaca untuk pola yang kompleks |
| Kasus Bawaan | Menggunakan else untuk skenario default | Menggunakan _ sebagai wildcard untuk kasus default |
| Pattern Matching | Terbatas pada pemeriksaan kondisi sederhana | Mendukung pattern matching kompleks (mis., sequence) |
| Kinerja | Umumnya efisien untuk kondisi sederhana | Berpotensi lebih andal untuk pola yang kompleks |
| Cakupan (Scope) | Setiap blok memerlukan cakupan eksplisit dengan indentasi | Cakupan secara alami didefinisikan di bawah blok case |
| Kasus Penggunaan | Cocok untuk tugas pengambilan keputusan sederhana | Ideal untuk dekonstruksi struktur data kompleks |
| Fleksibilitas | Terbatas pada perbandingan skalar | Dapat mencocokkan tipe data dan struktur yang kompleks |
| Break Otomatis | Memerlukan break eksplisit di beberapa bahasa | Keluar secara otomatis setelah sebuah case cocok |
Kasus Penggunaan Lanjutan Match dan Case di Python
Aplikasi data science
Pernyataan match-case di Python sangat berguna dalam tugas prapemrosesan data di data science. Prapemrosesan sering kali melibatkan pengelompokan data ke kategori berbeda berdasarkan kriteria tertentu.
Misalnya, dalam dataset hewan, Anda mungkin ingin mengelompokkan berdasarkan kelas seperti mamalia, burung, reptil, dan sebagainya. Berikut contoh yang disederhanakan:
animal = "Eagle"
match animal:
case "Eagle" | "Parrot":
print("Bird")
case "Lion" | "Tiger":
print("Mammal")
case "Python" | "Crocodile":
print("Reptile")
case _:
print("Unknown Class")
# Bird
Pendekatan ini menyederhanakan logika if-else yang kompleks dan membuat kode lebih mudah dibaca serta dipelihara, terutama saat menangani dataset besar dengan banyak kategori.
Pengembangan web
Pada framework web seperti Django atau Flask, Anda dapat menggunakan match-case untuk merutekan permintaan HTTP atau menangani kode kesalahan tertentu. Pelajari lebih lanjut tentang Python untuk Developer dengan kursus online kami.
Contoh: Perutean Metode HTTP
# Example: Handling HTTP methods in a Flask-like application
method = "POST"
match method:
case "GET":
print("Fetching resource...")
case "POST":
print("Creating resource...")
case "PUT":
print("Updating resource...")
case "DELETE":
print("Deleting resource...")
case _:
print("Unsupported HTTP method.")
# Creating resource...
Penjelasan:
- Variabel
methodmerepresentasikan tipe permintaan HTTP. - Setiap
caseberkorespondensi dengan kemungkinan metode HTTP, menyederhanakan apa yang sebaliknya menjadi beberapa pernyataanif-elif.
Penanganan API
Saat memproses respons API, match-case dapat digunakan untuk menangani berbagai status kode atau mengategorikan respons JSON.
Contoh: Menangani Kode Status
# Example: API response status code handling
status_code = 200
match status_code:
case 200:
print("Request succeeded.")
case 404:
print("Resource not found.")
case 500:
print("Server error. Please try again later.")
case _:
print("Unknown status code.")
# Request succeeded.
Pendekatan ini memudahkan interpretasi dan respons terhadap hasil API.
Pencocokan pola sederhana vs. kompleks
match-case Python tidak terbatas pada pencocokan nilai konstan; ia dapat menangani pola yang lebih rumit. Berikut pembedanya:
Pencocokan konstan sederhana
Pencocokan sederhana seperti string atau integer sangat baik untuk logika yang bersih dan mudah dibaca, seperti terlihat pada contoh di atas.
Pencocokan pola kompleks
Saat bekerja dengan data terstruktur (mis., dictionary, sequence), match-case dapat mengekstrak dan memanipulasi data dengan efisien.
Contoh: Mencocokkan Struktur Data
# Example: Categorizing configurations
config = {"type": "database", "name": "PostgreSQL", "version": 13}
match config:
case {"type": "database", "name": name, "version": version}:
print(f"Database: {name} (Version {version})")
case {"type": "cache", "name": name}:
print(f"Cache system: {name}")
case _:
print("Unknown configuration.")
# Database: PostgreSQL (Version 13)
Penjelasan:
-
casepertama mengekstraknamedanversiondari dictionary, sehingga lebih mudah bekerja dengan data terstruktur. -
Ini menunjukkan kekuatan sesungguhnya dari structural pattern matching di Python, jauh melampaui apa yang dapat dicapai implementasi switch-case tradisional.
Berikut bagian yang telah diringkas dengan penambahan yang relevan saja:
Melampaui Switch-Case Dasar
Di luar pencocokan nilai dasar, match-case di Python mencakup beberapa fitur yang membedakannya dari pernyataan switch-case tradisional di bahasa lain.
Guard clause
Guard adalah kondisi if yang dilampirkan ke sebuah case dan juga harus benar agar case tersebut cocok. Ini memungkinkan Anda menggabungkan pattern matching dengan logika tambahan — sesuatu yang tidak dapat dilakukan switch tradisional:
match point:
case (x, y) if x == y:
print(f"Point is on the diagonal at {x}")
case (x, y) if x > 0 and y > 0:
print(f"Point {point} is in the first quadrant")
case (x, y):
print(f"Point {point} is somewhere else")
# Point (3, 7) is in the first quadrant
Guard berguna ketika pola saja tidak cukup spesifik untuk membedakan antar kasus.
Melebihi switch-case: pola destrukturisasi
Walau contoh di atas berfokus pada penggunaan bergaya switch-case, perlu diketahui bahwa match-case Python juga dapat mendestrukturisasi sequence, dictionary, dan instance kelas — menangkap nilai di dalamnya sebagai bagian dari kecocokan. Ini jauh melampaui apa yang ditawarkan switch di bahasa lain dan menjadi salah satu alasan utama structural pattern matching ditambahkan ke Python.
Sebagai contoh, mencocokkan instance kelas:
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
point = Point(0, 5)
match point:
case Point(x=0, y=0):
print("Origin")
case Point(x=0, y=y):
print(f"On the Y-axis at {y}")
case Point():
print("Somewhere else on the plane")
# On the Y-axis at 5
Jika Anda ingin mengeksplorasi pola tingkat lanjut ini secara mendalam, lihat PEP 636, tutorial resmi tentang structural pattern matching.
Kesalahan Umum dan Praktik Terbaik Switch Case di Python
Tips debugging
Kesalahan umum saat menggunakan match-case di Python adalah lupa menyertakan garis bawah (_) untuk kasus default, mirip dengan 'else' pada pernyataan if-else tradisional. Ini dapat menyebabkan perilaku tak terduga jika tidak ada case spesifik yang cocok. Selalu sertakan kasus default untuk menangani nilai yang tak terduga atau beragam.
Pertimbangan kinerja
Walau pernyataan match-case merupakan alat yang kuat, dampaknya terhadap kinerja kode Python, terutama dalam aplikasi skala besar, perlu dipertimbangkan. Dalam skenario dengan banyak case atau pattern matching yang kompleks, kinerja berpotensi terpengaruh. Melakukan profiling dan pengujian kinerja kode Anda dalam skenario dunia nyata sangat penting untuk memahami dan mengurangi potensi masalah kinerja.
Match-Case Python Versus Switch-Case Tradisional
Analisis perbandingan
Match-case di Python berbeda secara signifikan dari pernyataan switch-case tradisional yang ditemukan di bahasa seperti Java atau C++. Di Java, misalnya, switch terbatas pada pencocokan nilai skalar (seperti integer dan enum), sedangkan match-case di Python menawarkan kemampuan pattern matching yang jauh lebih fleksibel, memungkinkan pencocokan tipe data kompleks, seperti sequence dan instance kelas. Ini membuat implementasi Python lebih kuat namun juga memerlukan pemahaman yang lebih mendalam tentang konsep pattern matching.
Panduan transisi
Bagi pemrogram yang terbiasa dengan pernyataan switch-case tradisional di bahasa seperti C++ atau Java, beralih ke match-case di Python memerlukan pergeseran pemikiran dari sekadar pencocokan nilai ke pattern matching.
Penting untuk dipahami bahwa match-case di Python lebih dari sekadar switch-case; ini adalah alat serbaguna untuk mendekonstruksi tipe data dan mengekstraksi informasi dari struktur yang kompleks. Berlatih dengan berbagai tipe data dan pola adalah kunci untuk menguasai penggunaannya.
Kesimpulan
Pernyataan match dan case di Python, yang diperkenalkan pada versi 3.10, telah menjadi fitur mapan dalam Python modern. Sejak itu, structural pattern matching berkembang menjadi alat andal yang tersedia di setiap versi bahasa yang masih didukung aktif — termasuk rilis stabil terbaru, Python 3.14.4 (April 2026), serta 3.13 dan 3.12.
Anda dapat membaca lebih lanjut tentang Fungsi Python dalam tutorial lengkap kami dan mengeksplorasi konsep ini dan lainnya di kursus Intermediate Python.

Editor senior di bidang AI dan edtech. Berkomitmen mengeksplorasi tren data dan AI.
FAQ Switch Case di Python
Apa yang terjadi jika dua case cocok dengan input yang sama dalam pernyataan match-case?
Python mengevaluasi case sesuai urutan kemunculannya. Case pertama yang cocok akan dijalankan, dan blok match langsung keluar.
Bisakah match-case digunakan dengan kelas atau objek kustom?
Ya, match-case dapat bekerja dengan kelas kustom. Anda dapat mendefinisikan pola untuk mencocokkan atribut atau bahkan menggunakan guard untuk menerapkan logika tambahan.
Apakah match-case lebih cepat daripada if-elif-else?
Perbedaan kinerja bergantung pada kompleksitas kondisinya. Untuk pemeriksaan nilai sederhana, keduanya berkinerja serupa. Namun, match-case bisa lebih efisien dan mudah dibaca untuk pattern matching yang kompleks.
Apa itu guard dalam pernyataan match-case?
Guard adalah kondisi yang ditentukan setelah case yang semakin memperjelas kapan suatu case harus cocok. Contohnya:
match value:
case x if x > 10:
print("Value is greater than 10.")
Bisakah Anda menggunakan match-case pada Python versi sebelum 3.10?
Tidak, match-case hanya tersedia di Python 3.10 dan yang lebih baru. Untuk versi sebelumnya, Anda dapat menggunakan if-elif-else atau pemetaan dictionary untuk mencapai fungsionalitas serupa.