我在看http://www.dabeaz.com/coroutines/,我觉得这很有趣,但在一个例子中,有一种我不理解的行为。
在bogus.py示例中,在此处报告
# bogus.py
#
# Bogus example of a generator that produces and receives values
def countdown(n):
print "Counting down from", n
while n >= 0:
newvalue = (yield n)
# If a new value got sent in, reset n with it
if newvalue is not None:
n = newvalue
else:
n -= 1
# The holy grail countdown
c = countdown(5)
for x in c:
print x
if x == 5:
c.send(3)
生成的数字序列是 5、2、1、0,我不明白数字 3 去了哪里:在 之后send(3)
,变量n
设置正确,但在第二次执行时yield
,看起来值 3 只是不屈服于 for 循环。
有人可以澄清我为什么会这样吗?