Generator nesnesi
- Python kursu
- Orta seviye
- Ders 101/116
- 5 dk
Generator nesnesini ve next() çağrısını öğrenirsin.
Generator nesnesi
Bir üreteç fonksiyonu çağrıldığında generator nesnesi döner; fonksiyon gövdesi henüz çalışmaz. next() çağrısı ilk yield'e kadar gövdeyi ilerletir.
Örnek: g = count_up() çağrısı bir generator nesnesi verir. next(g) çağrısı 1 döner ve fonksiyon ilk yield'de duraklar. İkinci next(g) çağrısı 2 döner. Tüm değerler tükenince StopIteration hatası fırlar.
StopIteration
Bir generator tüm değerleri ürettiğinde next() çağrısı StopIteration hatası fırlatır. for döngüsü bu hatayı yakalar ve döngüyü sessizce bitirir.
Manuel next() çağrılarında bu hatayı görebilirsin. Örnek: g = (x for x in [1]) üretecinde next(g) 1 döner, ikinci next(g) StopIteration fırlatır. Bu yüzden for döngüsü genellikle daha güvenlidir; manuel çağrıda try/except gerekir.
Uygulama next ile değer al
def gen(): fonksiyonunu tanımla; gövdede yield 1 ve yield 2 olsun. g = gen() ile bir generator nesnesi oluştur. print(next(g)) ve print(next(g)) çağrılarıyla iki değeri yazdır.
Başlangıç kodu
# gen üreteci ve next ile değer alÖrnek çözüm
# gen üreteci ve next ile değer al
def gen():
yield 1
yield 2
g = gen()
print(next(g))
print(next(g))Beklenen çıktı
1 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 next çağrısı
g = count_up()
print(____(g))
g = count_up()
print(next(g))
Açıklama: next(g) bir sonraki değeri üretir.
2 Tükenmiş üreteçte next() ne yapar?
- None döner
- Sonsuz döngüye girer
- Yeniden başlar
- StopIteration fırlatır Doğru cevap
Açıklama: Tükenmiş üreteçte next() StopIteration fırlatır.
3 Generator nesnesi parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
g = gen() |
Generator nesnesi |
next(g) |
Sonraki değer |
StopIteration |
Tükenme hatası |
for v in g |
Otomatik yineleme |