Вот мой простой код
class Fibonacci:
@staticmethod
def series():
fprev = 1
fnext = 1
yield fnext
while True:
yield fnext
fprev,fnext = fnext,fprev+fnext
under10 = (i for i in Fibonacci.series() if i<10)
for i in under10 :
print i
Это абсолютно очевидно, но ... ПОЧЕМУ интерпретатор выполняет блок
while True:
yield fnext
fprev,fnext = fnext,fprev+fnext
навсегда? Я указал в генераторе, что мне нужны только элементы <10
under10 = (i for i in Fibonacci.series() if i<10)
ИМХО, это небольшое недоразумение Есть ли способ предотвратить бесконечное выполнение без перезаписи «серии»?