コードは次のとおりです (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 に設定されると、次の反復では 2 ではなく 3 が生成されますか? 私は何が欠けていますか?