0Pricing
Python Academy · Pelajaran

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 if yang 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

  1. Dasar-Dasar match dan case
  2. Mencocokkan Sequence dan Mapping
  3. Pola Kelas
  4. Guard dan Wildcard
← Kembali ke Python Academy