本文共 923 字,大约阅读时间需要 3 分钟。
import time
#列表生成式#只记住当前位置,只有一个_next_方法,取下一个值这个值就是当前值!。只能记住当前的!前面的数据不保存,后面的数据没生成。
c=(i*2 for i in range(100000000))print(c)#斐波那契
def fib(max):n,a,b=0,0,1while n<max:#print(b)yield b #这样做就是一个生成器(函数生成器)a,b=b,a+bn=n+1return "done"f=(fib(4)) #生成器调生成一个数据就中断,能进行其他操作
print(f.next())print("干点其他的事")print(f.next())g=fib(6)
while True:try:x=next(g)print("g:",x)except StopIteration as e:print("vlan:",e.value)breakdef consumer(name):
print("%s准备吃包子啦!"%name)while True:baozi=yieldprint("baozi[%s]来了,被[%s]吃了!"%(baozi,name))def producer(name1,name2):
c=consumer(name1)c2=consumer(name2)c.next()c2.next()print("老子滴开始准备包子啦!")for i in range(10):time.sleep(1)print("做了2个包子!一人一个!")c.send(i) #把值传给yield并调用生成器c2.send(i)producer("alex","胡悦")
转载于:https://blog.51cto.com/12992048/2176362