Python9- 生成器函数进阶-day14

#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)

猜你喜欢

转载自www.cnblogs.com/zhangtengccie/p/10328104.html