Во-первых, в каждой итерации цикла вы продвигаете итератор 3 раза, делая 3 отдельных вызова для __next__()
, так что if x.__next__()==10
может никогда не попасть, поскольку 10-й элемент мог быть использован ранее. То же самое с отсутствующим условием.
Во-вторых, в python обычно есть лучшие шаблоны, в которых вам не нужно напрямую звонить на next
. Например, если у вас конечный итератор, используйте цикл for, чтобы автоматически прервать работу StopIteration:
x = simpleGeneratorFun(1)
for i in x:
print i