CodeBlanks Logo Icon CodeBlanks

yield from

yield from ile delegasyonu öğrenirsin.

yield from

yield from, başka bir üreteci ya da yinelenebilir nesneyi olduğu gibi kendi üreteciymiş gibi yayımlar. İç içe üreteçleri düzleştirmek için kullanılır.

Örnek: def outer():\n yield 0\n yield from inner()\n yield 3. Burada inner() üretecinin tüm değerleri sırayla outer()'dan yayımlanır. for v in inner(): yield v yazmakla aynı sonucu verir ama daha kısa ve verimlidir.

Verimlilik avantajı

yield from, sadece bir kısaltma değil, aynı zamanda verimli bir yapıdır. Python, iç üreteci doğrudan çağırana bağlar; her değer için ara çerçeve (frame) oluşturmaz.

Bu, özellikle özyinelemeli (recursive) üreteçlerde fark yaratır. Örnek: ağaç yapısında tüm yaprakları gezen bir üreteç, yield from ile alt ağaçları tembel gezer. Bellek ve hız avantajı büyüktür; derin verilerde fark edilir.

Uygulama yield from ile düzleştir

def inner(): fonksiyonunu tanımla; gövdede yield 1 ve yield 2 olsun. def outer(): fonksiyonunu tanımla; gövdede yield 0, yield from inner() ve yield 3 olsun. Sonra print(list(outer())) ile tüm değerleri yazdır.

Başlangıç kodu

main.py
# yield from ile iç üreteci yayımla

Örnek çözüm

main.py
# yield from ile iç üreteci yayımla
def inner():
    yield 1
    yield 2

def outer():
    yield 0
    yield from inner()
    yield 3

print(list(outer()))

Beklenen çıktı

[0, 1, 2, 3]

Soru ve cevaplar

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

1 yield from ne yapar?

  • Yalnızca tek değer üretir
  • Üreteci durdurur
  • İç üretecin tüm değerlerini yayımlar Doğru cevap
  • Yeni bir üreteç oluşturur

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

2 yield from satırı

Soru
def outer():
    yield 0
    ____ inner()
    yield 3
Cevap
def outer():
    yield 0
    yield from inner()
    yield 3

Açıklama: yield from iç üreteci yayımlar.

3 yield from parçalarını eşleştir

Kavram Anlamı
yield from İç üreteç yayını
inner() İç üreteç
outer() Dış üreteç
list(outer()) Sonuç listesi

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