1 '''。在Python中,这种一边循环一边计算的机制,称为生成器:generator。 2 要创建一个generator,有很多种方法。 3 可以通过next()函数获得generator的下一个返回值''' 4 5 def fib(max): 6 n, a, b = 0, 0, 1 7 while n < max: 8 #print(b) 9 yield b 10 a, b = b, a + b 11 n = n + 1 12 return 'done' 13 14 15 #_*_coding:utf-8_*_ 16 #@__author__ = 'Alex Li' 17 18 import time 19 def consumer(name): 20 print("%s 准备吃包子啦!" %name) 21 while True: 22 baozi = yield 23 24 print("包子[%s]来了,被[%s]吃了!" %(baozi,name)) 25 26 27 def producer(name): 28 c = consumer('A') 29 c2 = consumer('B') 30 c.__next__() #这样才能启用生成器 31 c2.__next__() #这样才能启用生成器 32 print("老子开始准备做包子啦!") 33 for i in range(10): 34 time.sleep(1) 35 print("做了2个包子!") 36 c.send(i) #传递参数给yeild 37 c2.send(i) #传递参数i给yeild,注意一次只能传输一个参数 38 39 producer("alex") 40 41 #通过生成器实现协程并行运算 42 43 #迭代器 44 """凡是可作用于for循环的对象都是Iterable(可迭代)类型; 45 凡是可作用于next()函数的对象都是Iterator(迭代器)类型,它们表示一个惰性计算的序列; 46 集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter() 47 if 函数获得一个Iterator对象: 48 """