Python generator ve iteratorler nedir? ve yield komutu nedir?

Arkadaşlar lütfen bunların ne olduğunu bana biri açıklayabilir mi ?
forumda araştırdım ama sanırım tam olarak bulamadım
internettede anladığımı söyleyemem


Aklıma bir şey takıldı da, siz burada bana bu konular hakkında bilgi sahibi olduğunuzu söylemiştiniz sanki? Yoksa birbirimizi yanlış mı anlamışız?

2 Beğeni

pygame ’ i öğrenirken izlediğim adam (https://www.youtube.com/watch?v=0ctJV0EPbuc) itertools modülünü kullanıyordu bende next()
metodunu( from itertools import * olarak import ettiğim için ve oto tamamlama olmadığından metod nereden göremediğimden) itertools modülünün içinden bir metod zannetim
ve itertools adlı modülünde listelerin indekslerini bir artırarak düzenli sıraya koymak amaçlı bir modül zannedim meğer öyle değilmiş o yüzden bu konuyu açtım, kafam biraz karıştıda.

bir şey sorucam neden generatör tanımlarken şunu yapıyoruz nedenini lütfen anlatın

l = (i for i in range(5))
print(l)
#çıktı -> <generator object <genexpr> at 0x02E7CA70>

bunu tek satırlık liste işlemlerinde görmüştüm ama burda neden bunun generatör olduğunu anlamıyorum

Aslında generatorler bu şekilde tanımlanmıyor. Bu sadece kolaylaştırılmış bir sözdizimi. Bunu fonksiyonlar normalde def ile tanımlandığı halde lambda kullanılarak bazı durumlarda daha az kod yazılması gibi düşünebilirsiniz.

Çünkü python’u geliştiren kişiler öyle karar vermiş. Generatorlerin ne olduğunu anladıktan sonra bu kullanım sizin için anlaşılması zor olmamalı. Nasıl lambda fonksiyonlar normal fonksiyonlardan farklı bir sözdizimi ile tanımlanıyorsa bu generatorler de bu şekilde tanımlanıyor.

Oradakinde [] kullanılıyor. Bu ikisini karıştırmamak lazım:

>>> (i for i in range(5))
<generator object <genexpr> at 0x00000242D104BBA0>
>>> [i for i in range(5)]
[0, 1, 2, 3, 4]

anladım çok saolun, çok teşekkür ederim