码迷,mamicode.com
首页 > 其他好文 > 详细

生成器中send 函数

时间:2019-10-07 21:50:15      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:tar   ***   生成   __next__   应该   概念   das   为什么   nbsp   

def foo():
print(‘starting...‘)
while True:
res=yield 4
print(‘res:‘,res)

g=foo()
print(g.__next__())
print(‘*‘*20)
print(g.send(7))

运行结果:
starting...
4
********************
res: 7
4
先大致说一下send函数的概念:此时你应该注意到上面那个的紫色的字,还有上面那个res的值为什么是None,这个变成了7,到底为什么,这是因为,send是发送一个参数给res的,因为上面讲到,return的时候,并没有把4赋值给res,下次执行的时候只好继续执行赋值操作,只好赋值为None了,而如果用send的话,开始执行的时候,先接着上一次(return 4之后)执行,先把7赋值给了res,然后执行next的作用,遇见下一回的yield,return出结果后结束。

 

5.程序执行g.send(7),程序会从yield关键字那一行继续向下运行,send会把7这个值赋值给res变量

6.由于send方法中包含next()方法,所以程序会继续向下运行执行print方法,然后再次进入while循环

7.程序执行再次遇到yield关键字,yield会返回后面的值后,程序再次暂停,直到再次调用next方法或send方法。
————————————————

生成器中send 函数

标签:tar   ***   生成   __next__   应该   概念   das   为什么   nbsp   

原文地址:https://www.cnblogs.com/fan-1994716/p/11632078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!