我有一個生成器函數,需要迭代器對象並對每個項目執行一些邏輯。這在更大的迭代列表上運行。然後它產生將結果返回給調用代碼,因此它可以打破for
和while
環迭代器耗盡後迭代器執行掛起
def func(it):
item = next(it)
item = item.execute()
yield item
it = iter(range(1, 10))
condition = True
while condition:
for item in func(it):
condition = item
print condition
執行在Python IDLE這段代碼,打印遵循和掛起:
1
2
3
4
5
6
7
8
9
我需要CTRL + C打破循環。如果我使用常規範圍(10),所以循環以值0開始,它立即中斷(從condition=0
開始)並返回提示。
我錯過了什麼?爲什麼我的迭代器在耗盡時會掛起?
爲什麼downvotes?.. – Vinny