我正在学习 Python yield
,发现这yield
不仅是生成器输出返回值的方式,也是将值放入生成器的方式。例如下面的代码
def f():
print (yield),
print 0,
print (yield),
print 1
g = f()
g.send(None)
g.send('x')
g.send('y')
在全局范围内,它是生成器send
的值'x'
,因此将在其中输出。但我无法理解'y'
f
x 0 y 1
- 有 2
yield
秒,但有 3send
秒。为什么要None
第一时间发送? StopIteration
它最后抛出一个send
。有什么办法可以避免这个异常?
谁能解释一下?提前致谢。