生成器
本质就是一个函数(包含yield关键字)
1 import random 2 import time 3 4 5 def consumer(): 6 while True: 7 data = yield # 返回data 暂停函数 等待下一次next激活 8 print("消费者拿到:", data) 9 10 11 def producer(cos): 12 next(cos) # 激活一下生成器 让他执行到yield 13 while True: 14 item = random.randint(0, 100) 15 print("生产者生产了:", item) 16 cos.send(item) # 激活生成器 执行生成器里面的代码 遇到yield 回来 17 time.sleep(1) 18 19 20 if __name__ == '__main__': 21 c = consumer() # 返回一个消费者生成器对象 22 producer(c)
1 # 斐波拉切数列 兔子数列 2 def func(number): 3 n, a, b = 0, 1, 1 4 while n < number: 5 yield a 6 a, b = b, a+b 7 n += 1 8 9 10 for i in func(10): 11 print(i, end=" ")