簡體   English   中英

python 3生成器中的next和for之間的區別?

[英]Difference between next and for in python 3 generator?

我嘗試了解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此答案此示例

為什么2個結果有所不同?

每次調用int_gen() ,您都會創建一個新的生成器來重新啟動所有操作。 如果要讓生成器在中斷的地方繼續運行,則必須保存它,以便傳遞給next()有用的東西。

it = int_gen()
print(next(it)) # 2
print(next(it)) # 3
print(next(it)) # 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM