【发布时间】:2012-11-17 13:19:09
【问题描述】:
我正在尝试了解 python 生成器的一些微妙细节。我编写的一个测试程序,看看我是否可以向/从同一个生成器交替发送和读取值,如下所示:
def injector():
while True:
try:
print 'a'
v = yield
print 'b', v
yield v
print 'c'
except GeneratorExit:
print 'exit'
break
g = injector()
print 'send none'
g.send(None)
print 'send 2'
g.send(2)
print 'receiving'
v = g.next()
print 'received', v
g.close()
这个程序的预期输出是:
send none
a
send 2
b 2
receiving
received 2
c
a
exit
我得到的输出是:
send none
a
send 2
b 2
receiving
c
a
received None
exit
现在,很明显,问题是为什么我会得到上述输出?关于生成器的工作原理,我有什么不明白的地方?
【问题讨论】:
标签: python generator coroutine