自从 Python 2.5 开始,生成器支持
我将尝试介绍的是如何实现以下操作:
为什么每秒钟的“send”操作不起作用?
send()
、throw()
和 close()
。在定义的生成器中,可以通过类似以下方式“捕获”发送的数据:def gen():
while True:
x = (yield)
if x == 3:
print('received 3!!')
break
else:
yield x
我将尝试介绍的是如何实现以下操作:
我想要做的是:
def gen2():
while True:
yield (yield)
注意,这是一个合法的生成器,它可以完成某些操作...
首先我要弄清楚的是:
这样的写作方式有什么好处?
当进行以下操作时,也要注意:
g = gen2()
next(g)
g.send(10) # output: 10
g.send(2) # output: nothing
g.send(3) # output: 3
g.send(44) # output: nothing
为什么每秒钟的“send”操作不起作用?
gen2
替换为gen
时,在send(3)
处出现了“StopIteration”。 - Jean-François Fabre.send
调用的示例中,您是否指的是在交互式提示符下逐个执行这些命令时发生的“输出”?如果您以非交互方式运行代码,则根本不会有任何输出。 - BrenBarn