yield from
- Python kursu
- Orta seviye
- Ders 102/116
- 5 dk
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
# yield from ile iç üreteci yayımlaÖrnek çözüm
# 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ı
def outer():
yield 0
____ inner()
yield 3
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 |