生成斐波拉契数列 def fib(length): a,b=0,1 n=0 while n<length: yield a a,b=b,a+b n+=1 return 'abc' g2=fib(10) try: print(next(g2))
生成器方法: __next__():获取下一个元素 send(value):向每次生成器调用中传值 注意:第一次调用send(None)
def gen():
i=0
while i<5:
temp=yield i
print(f'temp:{temp}')
i+=1
return "没有更多的数据"
g=gen()
g.__next__()
n1=g.send('haha')
n2=g.send('哈哈')
print(n1)
print(n2)
生成器:generator 1.通过列表推导式 g=(x for x in range(6)) 2.函数和yield def func(): ... yield g=func() 产生元素 1.next(generator) -->每次调用都会生成一个新的元素,如果元素产生元素完毕,再次调用就会产生异常 2.生成器自己的方法: g.__next__() g.send() 应用:协程
#进程>线程>协程
def task1(n):
for i in range(n):
print("在搬运第{}块砖头".format(i))
yield None
def task2(n):
for i in range(n):
print("正在听{}".format(i))
yield None
g1=task1(10)
g2=task2(5)
while True:
try:
g1.__next__()
g2.__next__()
except:
break