2016-12-09 6 views
0

私は次のコードを試してくださいパイソン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 
... 

参照先:nextthis answerthis example

なぜ2つの結果が異なるのですか?

答えて

2

int_gen()に電話するたびに、すべてを再起動する新しいジェネレータを作成します。ジェネレータを中断したところから続けるには、保存する必要がありますので、next()に渡すのに便利なものがあるようにしてください。

it = int_gen() 
print(next(it)) # 2 
print(next(it)) # 3 
print(next(it)) # 4 
関連する問題