生成斐波拉契数列 def fib(length):a,b=0,1n=0while n<length:yield aa,b=b,a+bn+=1return 'abc' g2=fib(10) try:print(next(g2))
生成器方法: __next__():获取下一个元素 send(value):向每次生成器调用中传值 注意:第一次调用send(None)
def gen():i=0while i<5:temp=yield iprint(f'temp:{temp}')i+=1return "没有更多的数据"
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 Noneg1=task1(10)
g2=task2(5)while True:try:g1.__next__()g2.__next__()except:break