【发布时间】:2011-11-13 20:13:18
【问题描述】:
我正在阅读 python 中的 yield 关键字,并试图理解运行此示例:
def countfrom(n):
while True:
print "before yield"
yield n
n += 1
print "after yield"
for i in countfrom(10):
print "enter for loop"
if i <= 20:
print i
else:
break
输出是:
before yield
enter for loop
10
after yield
before yield
enter for loop
11
after yield
before yield
enter for loop
12
after yield
before yield
enter for loop
13
after yield
before yield
enter for loop
14
after yield
before yield
enter for loop
15
after yield
before yield
enter for loop
16
after yield
before yield
enter for loop
17
after yield
before yield
enter for loop
18
after yield
before yield
enter for loop
19
after yield
before yield
enter for loop
20
after yield
before yield
enter for loop
看起来 yield 将返回指定的值,并将继续运行函数直到结束(可能在并行线程中)。我的理解正确吗?
如果你能在不提及“生成器”的情况下回答这个问题,我将不胜感激,因为我试图一次理解一个。
【问题讨论】:
-
见stackoverflow.com/questions/231767/…。在没有生成器的情况下解释
yield是没有意义的,因为yield的主要(并且在大多数情况下是唯一的)目的是创建生成器。 -
-1:“如果你能在不提及“生成器”的情况下回答这个问题。”做不到。