CodeBlanks Logo Icon CodeBlanks

Özet - Generator'lar

yield, yield from ve send'i birleştirerek bir log akışı yazarsın.

Özet - Generator'lar

Bu grupta yield ile üreteç tanımlamayı, generator nesnesi ve next() çağrısını, yield from ile iç üreteç yayınlamayı, send ve throw ile dışarıdan değer/hata göndermeyi ve close ile üreteci sonlandırmayı gördük.

Üreteçler tembel çalışır, bellekte tüm veriyi tutmaz. yield değer üretip duraklar; next ilerletir; yield from iç üreteci bağlar; send değer gönderir; close sonlandırır. Şimdi bunları birleştiren bir örneği yazacağız.

Uygulama Birleşik özet örneği

def gen(): fonksiyonunu tanımla. Gövdede yield 1, yield from [2, 3] ve yield 4 satırları olsun. Sonra print(list(gen())) ile tüm değerleri yazdır.

Başlangıç kodu

main.py
# yield ve yield from ile üreteç yaz

Örnek çözüm

main.py
# yield ve yield from ile üreteç yaz
def gen():
    yield 1
    yield from [2, 3]
    yield 4

print(list(gen()))

Beklenen çıktı

[1, 2, 3, 4]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi yapı iç üreteci yayımlar?

  • yield
  • yield from Doğru cevap
  • send
  • close

Açıklama: yield from iç üretecin tüm değerlerini yayımlar.

2 Üreteç kavramlarını eşleştir

Kavram Anlamı
yield Değer üretir
next İlerletir
yield from İç üreteç
close Sonlandırır

3 yield from satırı

Soru
def gen():
    yield 1
    ____ [2, 3]
    yield 4
Cevap
def gen():
    yield 1
    yield from [2, 3]
    yield 4

Açıklama: yield from [2, 3] ile listeyi yayımlar.

4 Özet örneği parçalarını eşleştir

Kavram Anlamı
def gen Üreteç tanımı
yield 1 Tek değer
yield from [2, 3] Liste yayını
print(list(gen())) Sonuç listeleme

Orta seviye bölümündeki tüm dersler