2016-12-09 36 views
0

我試着去理解在Python 3.我試試下面的代碼生成:下一個和for 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 
... 

參考:nextthis answerthis example

爲什麼2個結果有區別?

回答

2

每次撥打電話int_gen()時,您都會重新制作一臺新的發電機,以重新啓動所有設備。如果你想讓發電機繼續停下來,你必須保存它,所以你有一些有用的東西傳遞給next()

it = int_gen() 
print(next(it)) # 2 
print(next(it)) # 3 
print(next(it)) # 4 
相關問題