python之yield

一.yield功能

1.使函数变成一个生成器。
2.相当于return,返回值。
3.相当于容器容易接收一个值。

二.例子

1.代码

def func(name):     food = []     while True:         x = yield food    #每一个yield都是先弹上一轮的food,然后挂起等待,直到下一个send传值运行         print({0} 吃 {1}.format(name,x))         food.append(x)  f = func(狗哥)  res = f.send(None) #相当于f.__next__()  print(res) res = f.send(骨头) print(res) res = f.send(粥) print(res)  #[] #狗哥 吃 骨头 #['骨头'] #狗哥 吃 粥 #['骨头', '粥']  

2. 讲解

每个yield会先返回值,然后挂起函数等待,直到下一次send函数传值运行下面的代码,结束这个yield的生命周期;随之进入下个yield先返回上次运行结果的值,挂起等待……