这是代码(由 David Beazley 提供,幻灯片 #32 http://dabeaz.com/coroutines/Coroutines.pdf):
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
c = countdown(5)
for n in c:
print n
if n == 5:
c.send(3)
这是输出:http ://codepad.org/8eY3HLsK
我知道它不打印 4,但为什么不打印 3?一旦 n 设置为 3,下一次迭代应该产生 3 而不是 2?我错过了什么?