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方法。————————————————