【发布时间】:2016-01-11 01:24:18
【问题描述】:
我正在使用生成器以更好地了解它们的工作原理,但我对以下代码的结果感到困惑:
>>> def gen():
... for i in range(5):
... yield i
...
>>> count=gen()
>>> for i in count:
... print count.next()
...
1
3
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
StopIteration
>>>
这里发生了什么?看起来当它遇到“for i in count:”行时,生成器会产生第一个值。我不知道。
编辑:我应该补充一点,我并不是想“做对”。我试图打破一些东西,看看 Python 是如何反应的。当我产生错误时,我会更多地了解该语言。这个错误让我很困惑,但现在一切都清楚了。 到目前为止,所有的答案都是简短而甜蜜的。谢谢大家!
【问题讨论】:
-
for i in count和count.next()都 试图获得下一个项目 - 为什么你在同一个循环中使用它们?!
标签: python generator yield next