0Pricing
Python Academy · Pelajaran

Kata Kunci yield

Tulis fungsi generator dengan yield untuk membuat iterator kustom.

Kata Kunci yield 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.

Pendahuluan

Fungsi generator menggunakan yield untuk menghasilkan rangkaian nilai secara malas, dengan menghentikan sementara eksekusi di antara setiap yield.

Apa Itu yield?

Fungsi yang menggunakan yield adalah fungsi generator. Setiap pemanggilan next() melanjutkan eksekusi dari yield terakhir.
def count_up(n):
    for i in range(n):
        yield i
for x in count_up(3):
    print(x)

Fungsi Generator vs Fungsi Biasa

Memanggil fungsi generator mengembalikan objek generator — belum ada kode yang dijalankan. Kode dijalankan saat Anda melakukan iterasi.
def gen():
    print('start')
    yield 1
    print('middle')
    yield 2
g = gen()  # no print yet
print(next(g))  # 'start', then 1

Generator Tak Terbatas

def naturals(n=0): while True: yield n; n+=1 adalah rangkaian tak terbatas. Gunakan dengan islice atau break.
def naturals(n=0):
    while True:
        yield n
        n += 1
import itertools
print(list(itertools.islice(naturals(), 5)))

yield from

yield from sub_gen() mendelegasikan tugas kepada subgenerator dan meneruskan semua nilai. Setara dengan for x in sub: yield x.
def chain(*iters):
    for it in iters:
        yield from it
print(list(chain([1,2], [3,4], [5])))

Mengirim Nilai dengan send()

gen.send(value) melanjutkan generator DAN meneruskan nilai yang menjadi hasil dari ekspresi yield.
def accumulator():
    total = 0
    while True:
        n = yield total
        if n is None: break
        total += n
g = accumulator()
next(g)  # prime
print(g.send(10))
print(g.send(5))

Status Generator

Generator berhenti sementara di setiap yield dan mempertahankan variabel lokalnya di antara pemanggilan — sebuah coroutine alami.
def stateful():
    seen = set()
    while True:
        item = yield
        seen.add(item)
        yield len(seen)
g = stateful()
next(g); g.send('a'); print(next(g)); g.send('b'); print(next(g))

Menutup Generator

gen.close() memunculkan GeneratorExit di dalam generator. Gunakan try/finally di dalam generator untuk melakukan pembersihan.
def resource_gen():
    try:
        while True:
            yield
    finally:
        print('cleaned up')
g = resource_gen()
next(g)
g.close()

StopIteration dan return

return value dalam generator menetapkan nilai atribut dari pengecualian StopIteration. Nilai ini digunakan oleh yield from untuk mengambil hasilnya.
def gen_with_return():
    yield 1
    yield 2
    return 'done'
g = gen_with_return()
try:
    while True: print(next(g))
except StopIteration as e:
    print('returned:', e.value)

Generator Fibonacci

Generator sangat cocok untuk rangkaian matematika tak terbatas: yield a; a, b = b, a+b
def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b
import itertools
print(list(itertools.islice(fibonacci(), 10)))

Generator vs Kelas dengan __iter__

Generator lebih sederhana daripada menulis kelas dengan __iter__ dan __next__. Gunakan generator untuk rangkaian yang sederhana.
# Generator is simpler than:
# class Counter:
#     def __iter__(self): return self
#     def __next__(self): ...
print('generators simplify iterators')

Pemeriksaan Singkat

Apa yang dilakukan yield from sub() dalam fungsi generator?

Ringkasan

yield menjeda fungsi generator. Fungsi generator mengembalikan objek generator. yield from mendelegasikan proses ke subgenerator. send() meneruskan nilai masuk. close() memicu pembersihan.

Lanjutkan

Luar biasa! Lanjutkan ke pelajaran berikutnya untuk memperdalam keterampilan Anda.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kata Kunci yield” gratis?

Ya — teks lengkap “Kata Kunci yield” 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 “Kata Kunci yield”?

Tulis fungsi generator dengan yield untuk membuat iterator kustom. 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 “Kata Kunci yield” 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. List Comprehension
  2. Set dan Dict Comprehension
  3. Expression Generator
  4. Kata Kunci yield
← Kembali ke Python Academy