Guard dan Wildcard
Tambahkan kondisi dan kasus penangkap semua
Guard dan Wildcard adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Menyempurnakan Pencocokan
Terkadang pola struktural saja tidak cukup; Anda juga memerlukan kondisi. Penjaga menambahkan pengujian if ke sebuah kasus, sedangkan pola pengganti memberikan penanganan semua kemungkinan yang fleksibel.
Menambahkan Penjaga
Tuliskan if <condition> setelah sebuah pola. Kasus tersebut hanya cocok jika polanya sesuai dan penjaganya bernilai benar.
n = 7
match n:
case x if x < 0:
print('negative')
case x if x == 0:
print('zero')
case x if x > 0:
print('positive')Penjaga Menggunakan Nama yang Ditangkap
Penjaga dapat merujuk variabel yang diikat oleh pola. Di sini, pasangan yang ditangkap diperiksa kesamaannya.
point = [3, 3]
match point:
case [x, y] if x == y:
print('on the diagonal')
case [x, y]:
print('off the diagonal')Jika Penjaga Gagal
Jika strukturnya cocok tetapi penjaganya bernilai salah, pencocokan dilanjutkan ke kasus berikutnya, bukan dihentikan.
value = 5
match value:
case n if n > 100:
print('big')
case n:
print('fell through to here:', n)Penjaga dengan Pola Kelas
Penjaga dapat digabungkan dengan jenis pola apa pun, termasuk pola kelas, untuk menetapkan kondisi yang tepat pada atribut objek.
from dataclasses import dataclass
@dataclass
class Order:
total: float
def discount(order):
match order:
case Order(total=t) if t > 100:
return 'free shipping'
case Order():
return 'standard shipping'
print(discount(Order(150)))
print(discount(Order(50)))Ringkasan Pola Pengganti
Satu-satunya garis bawah _ cocok dengan apa pun dan tidak mengikat apa pun. Sebagai kasus terakhir, pola ini menangani semua hal yang tidak ditangkap sebelumnya.
x = 'unexpected'
match x:
case 'a':
print('letter a')
case _:
print('catch-all')Penangkapan vs Pola Pengganti
Penangkapan bernama juga cocok dengan apa pun tetapi menyimpan nilainya, sedangkan _ membuang nilai tersebut. Gunakan nama jika Anda memerlukan nilainya di dalam isi kasus.
value = 42
match value:
case 0:
print('zero')
case other: # capture: keeps the value
print('value was', other)Pola Pengganti di Dalam Pola
Garis bawah dapat muncul di dalam pola yang lebih besar untuk mengabaikan bagian-bagian yang tidak Anda perlukan.
record = ('user', 42, 'ignore_me')
match record:
case ('user', user_id, _):
print('user id:', user_id)Menggabungkan OR, Penjaga, dan Pola Pengganti
Fitur-fitur ini dapat dikomposisikan. Pola OR, lalu penjaga, kemudian pola pengganti terakhir menghasilkan pengklasifikasi yang ekspresif.
def classify(n):
match n:
case 0 | 1:
return 'binary digit'
case x if x % 2 == 0:
return 'even'
case _:
return 'odd'
print(classify(0))
print(classify(4))
print(classify(7))Kelengkapan Pencocokan
Berbeda dari beberapa bahasa lain, Python tidak memaksa pencocokan untuk mencakup semua kemungkinan. Jika tidak ada kasus yang cocok, pernyataan tersebut tidak melakukan apa-apa. Tambahkan case _ terakhir jika Anda ingin memastikan sebuah cabang selalu dijalankan.
color = 'purple'
result = 'no match'
match color:
case 'red':
result = 'stop'
case 'green':
result = 'go'
print(result)Penjaga pada Data yang Didestukturisasi
Penjaga berpadu secara alami dengan pola urutan dan pemetaan, sehingga Anda dapat menguji nilai yang baru saja Anda ambil.
data = [10, 20]
match data:
case [a, b] if a + b > 25:
print('sum is large')
case [a, b]:
print('sum is small')Uji Cepat
Apa yang terjadi ketika sebuah pola cocok secara struktural tetapi kondisi penjaganya bernilai salah?
Ringkasan
Anda telah mempelajari cara menambahkan kondisi dan kasus yang menangani semua kemungkinan.
- Penjaga menambahkan pengujian
ifyang dapat menggunakan nama-nama yang ditangkap. - Penjaga yang gagal meneruskan pencocokan ke kasus berikutnya.
_mencocokkan lalu membuang nilai; sebuah nama menangkapnya.- Tambahkan
case _terakhir untuk cabang yang selalu dijalankan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Guard dan Wildcard” gratis?
Ya — teks lengkap “Guard dan Wildcard” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Guard dan Wildcard”?
Tambahkan kondisi dan kasus penangkap semua Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Guard dan Wildcard” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar match dan case
- Mencocokkan Sequence dan Mapping
- Pola Kelas
- Guard dan Wildcard