#列表生成式
[i*2 for i in range(10)]#列表生成式
a = []
for i in range(10):
a.append(i*2)
b = (i*2 for i in range(10))#只有在调用时才会生成数据且只记录当前数据
b.next()
def fib(max):
n,a,b = 0,0,1
while n<max:
#print(b)
yield b
a,b = b,a+b#相当于t=(b,a+b),a=t[0],b=[a+b]
n=n+1
return “done”
fib(10)
f=fib(8)
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
print(f.next())
while True:#捕获异常
try:
x = next(g)
print(“g:”,x)
except StopIteration as e:
print(“Generator return value:”,e.value)
print("------satrt loop------")
for i in f:#循环取数
print(i)
import time
def cousumer(name):#定义用户函数操作
print("%s 我要准备吃包子了" %name)
while True:
baozi = yield
print(“包子[%s]来了,被[%s]给吃了” %(baozi,name))
def productor(name):#定义生产者函数操作
c1 = cousumer(“A”)
c2 = cousumer(“B”)
c1.next()
c2.next()
print(“我要准备做包子啦”)
for i in range(10):
time.sleep(1)
print(“做了一个包子,分给两个人”)
c1.send(i)#将值传入至生成器
c2.send(i)
productor(“jiangshuai”)