Daftar Referensi Python

Keyword yield mengubah fungsi menjadi generator yang menghasilkan nilai satu per satu sambil menyimpan state.

Sintaks

yield value
yield from iterable

Parameter

Parameter Wajib? Keterangan
value Tidak Nilai yang dikirim generator
iterable Ya* Sumber nilai pada bentuk yield from

Nilai balik: objek generator saat fungsi dipanggil; setiap yield menghasilkan satu nilai.

Contoh

def hitung():
    yield 1
    yield 2
    yield 3

print(list(hitung()))

Coba di IDE

Output:

[1, 2, 3]

Contoh Lainnya

Menghasilkan kuadrat

def kuadrat(batas):
    for n in range(batas):
        yield n * n

print(list(kuadrat(4)))

Coba di IDE

Output:

[0, 1, 4, 9]

Mendelegasikan dengan yield from

def gabung():
    yield from [1, 2]
    yield from [3, 4]

print(list(gabung()))

Coba di IDE

Output:

[1, 2, 3, 4]

State tersimpan

def penghitung():
    nilai = 10
    yield nilai
    nilai += 5
    yield nilai

gen = penghitung()
print(next(gen))
print(next(gen))

Coba di IDE

Output:

10
15

Kesalahan Umum

  • yield hanya boleh berada di dalam fungsi.
  • Generator tidak menjalankan body sampai diiterasi.
  • Generator yang sudah habis tidak dapat diulang; buat instance generator baru.

Pelajari Lebih Lanjut