#send的获取下一个值的效果和next基本一致,
#只不过在获取下一个值的时候,给上一个值的位置穿第一个数据
使用send的注册事项:
#第一次使用生成器的时候,必须用next获取下一个值
#最后一个yield不能接受外部的值
def generator(): print(123) content = yield 1 print('======',content) print(456) yield 2 g = generator() ret = g.__next__() print('***',ret) ret = g.send('hello') #send的效果和next一样 print('@@@',ret) 123 *** 1 ====== hello 456 @@@ 2
生成器进阶实例
def average(): sum = 0 count = 0 avg = 0 while True: num = yield avg #10 sum +=num #10 count +=1 #1 avg = sum/count avg_g = average() avg_g.__next__() avg1 = avg_g.send(10) print(avg1) avg2 = avg_g.send(20) print(avg2)