CodeBlanks Logo Icon CodeBlanks

Generator nesnesi

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

main.py
# gen üreteci ve next ile değer al

Örnek çözüm

main.py
# 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ı

Soru
g = count_up()
print(____(g))
Cevap
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

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