yield生成器中的send方法

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之后会抛出异常,这里可以看成是正常的提示,不必紧张。

发布了207 篇原创文章 · 获赞 16 · 访问量 9892

猜你喜欢

转载自blog.csdn.net/weixin_41855010/article/details/104635345
今日推荐