yield生成器中提供了send方法,可以给生成器传递参数。我们可以使用以下函数感受
def foo():
print('enter foo:')
while True:
result = yield 4
if result:
print('send me a value %d'%(result,))
return
else:
print('no send')
gen = foo()
print(next(gen))
print('ready to send')
print(gen.send(10))
运行结果如下:
enter foo:
Traceback (most recent call last):
File "E:\python60days\kw_yeild\yeild_test.py", line 35, in <module>
4
ready to send
send me a value 10
print(gen.send(10))
StopIteration
[Finished in 0.9s with exit code 1]
可以看到,我们使用了gen.send(10)这句话把10这个参数传递到了yield左侧的result当中。
值得一提的是,对于生成器,在return之后会抛出异常,这里可以看成是正常的提示,不必紧张。