计算移动平均值2

def make_average():
    series =[]
    def averager(new_value):
        series.append(new_value)
        total = sum (series)
        return total/len(series)


    return averager




avg = make_average()
print(avg(10))
print(avg(11))
print(avg(12))
print(avg.__code__.co_varnames)
print(avg.__code__.co_freevars)
print(avg.__closure__)
print(avg.__closure__[0].cell_contents)



def make_averager1():
    count =0
    total=0
    def averager1(new_value):
        nonlocal count ,total
        count+=1
        total+=new_value
        return total/count

    return averager1
avg1=make_averager1()
print(avg1(10))
print(avg1(11))
print(avg1(12))
print(avg1.__code__.co_varnames)
print(avg1.__code__.co_freevars)
print(avg1.__closure__)
print(avg1.__closure__[0].cell_contents)





10.0
10.5
11.0
('new_value', 'total')
('series',)
(<cell at 0x7fbb7f1fb978: list object at 0x7fbb7d5485c8>,)
[10, 11, 12]
10.0
10.5
11.0
('new_value',)
('count', 'total')
(<cell at 0x7fbb7f174e58: int object at 0xa69de0>, <cell at 0x7fbb7f174798: int object at 0xa6a1a0>)
3

猜你喜欢

转载自blog.csdn.net/qq_41000421/article/details/84637300