yield的问题
>>> def func(n):
... for i in range(0,n):
... arg= yield i
... print(i,arg)
...
>>> f=func(3)
>>> while True:
... print('main',next(f))
...
main 0
0 None
main 1
1 None
main 2
2 None
为何结果不是
main 0
0 0
main 1
1 1
main 2
2 2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
需要正确使用send方法~
arg= yield i
这句里arg是 send 过去的。
你在启动f后,使用 f.send(somevalue), 你就可以看见arg就是somevalue了。
如果需要返回请使用send通信
一楼的正解,要不然你只能获取yeild得返回值
你的func根本没有return语句,当然是None,应该这么使用: