一、一个函数调用时返回一个迭代器,那么这个函数就叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器。
二、#生成器可以在函数执行的时候干其它事情,函数依然保持中断状态,为异步请求
1 def cash_out(amount): 2 while amount > 0: 3 amount -= 100 4 yield amount 5 print("又来取钱啦") 6 7 atm = cash_out(500) 8 print(type(atm)) 9 print(atm.__next__()) 10 print(atm.__next__()) 11 print("干别的事情")#干别的事情 12 print(atm.__next__()) 13 print(atm.__next__())
<class 'generator'>
400
又来取钱啦
300
我好帅
又来取钱啦
200
又来取钱啦
100
三、生产者消费者模型
1 import time 2 3 def xiaofeizhe(name): 4 print("{0} 准备开始吃包子了".format(name)) 5 while True: 6 baozi = yield 7 print("{0}吃了{1}个包子了".format(name,baozi)) 8 def shengchanzhe(name): 9 print("我要开始做包子啦") 10 c = xiaofeizhe("A1") 11 c2 = xiaofeizhe("A2") 12 c.__next__() 13 c2.__next__() 14 for i in range(10): 15 time.sleep(1) 16 print("{0}做了两个包子".format(name)) 17 c.send(i) 18 c2.send(i) 19 if __name__ == "__main__": 20 shengchanzhe('黎叔叔')