2016-12-09 2 views
0

Я пытаюсь понять генератор в Python 3. Я стараюсь следующий код:Разница между следующим и для в генераторе python 3?

def int_gen(): 
    """Infinite integer generator""" 
    n = 1 
    while True: 
     n = n + 1 
     yield n 

print(next(int_gen())) # 2 
print(next(int_gen())) # 2 
print(next(int_gen())) # 2 

Однако в этом случае:

for i in int_gen(): 
    print(i) 

Результаты, как я ожидал:

2 
3 
4 
... 

Ссылаясь на: next, this answer и this example

Почему разница 2 результатов?

ответ

2

Каждый раз, когда вы звоните int_gen(), вы создаете новый генератор, который перезапускает все. Если вы хотите, чтобы генератор продолжал работу, где он был остановлен, вам нужно будет сохранить его, чтобы у вас было что-то полезное для перехода на next().

it = int_gen() 
print(next(it)) # 2 
print(next(it)) # 3 
print(next(it)) # 4 
Смежные вопросы