send()和next()

#send

        send 获取下一个值的效果和 next 基本一致,走到第一个yield结束  (作用范围一模一样)

        send 在获取下一个值的时候会给上一个 yield 的位置传递一个数据 

                #第一次使用生成器函数,不能用要用 next 获取下一个值

                #函数中的最后一个 yield 不能接受外部的值

yield from

 

计算平均值

def wrapper(func):
    def inner(*args,**kwargs):
        ret = func(*args,**kwargs)
        ret.__next__()
        return ret
    return inner

@wrapper
def average():
    sum = 0
    count = 0
    avg = 0
    while True:
        num = yield avg
        sum += num
        count += 1
        avg = sum/count
        
avg_g = average()
while 1:
    number = int(input('input a number:'))
    ret = avg_g.send(number)
    print(ret)
View Code

posted on 2018-08-29 13:31  偷悄悄的放个屁  阅读(123)  评论(0编辑  收藏  举报

导航