yield 生成器
def fib(max):
n,a,b=0,0,1
l=[]
while n<max:
#print(b)
yield b
l.append(b)
a,b=b,a+b
n+=1
r=fib(10)
print(r.__next__())
print(r.__next__())
print(r.__next__())
使用.send(val)传入一个值到yield
def consumer(name):
while True:
print('%s go to buy car'%(name))
c=yield
print('%s buyed a car of %s'%(name,c))
c1=consumer('Bao')
c1.__next__()
c1.send('Benz')
简单的生产、消费
def consumer(name):
while True:
print('%s go to buy car'%(name))
c=yield
print('%s buyed a car of %s'%(name,c))
def producer(car):
c1=consumer('Bao')
c1.__next__()
for i in car:
c1.send(i)
producer(['Benz','toyota','BMW'])
输出结果:
Bao go to buy car
Bao buyed a car of Benz
Bao go to buy car
Bao buyed a car of toyota
Bao go to buy car
Bao buyed a car of BMW
Bao go to buy car