Sonsuz elemanlar üretebilen düz bir üreteç ifadesi var mı?
Bu tamamen teorik bir sorudur. Burada "pratik" bir cevaba gerek yok :)
Örneğin, sonlu bir üretici yapmak kolaydır:
my_gen = (0 for i in xrange(42))
Bununla birlikte, sonsuz bir tane yapmak için ad alanımı sahte bir işlevle "kirletmem" gerekiyor:
def _my_gen():
while True:
yield 0
my_gen = _my_gen()
İşleri ayrı bir dosyada yapmak ve import
daha sonra yapmak sayılmaz.
Bunun itertools.repeat
tam olarak bunu yaptığını da biliyorum . O olmadan tek satırlık bir çözüm olup olmadığını merak ediyorum.
del _my_gen
ikisini karıştırmak istemiyorsanız da kullanabilirsiniz
my_gen
ve sonra yapınmy_gen = my_gen()
.