Title: to do by using the input generator calculates a time average value of each.
def init(func): def inner(*args,**kwargs): g = func(*args,**kwargs) g.__next__() return g return inner @init def avgrage(): sum = 0 count = 0 avg = 0 while True: num = yield avg sum += num count += 1 avg = sum/count avg_g = Avgrage () right = avg_g.send (10 ) the printer (right) right = avg_g.send (76 ) the printer (right)
By a generator mounted on a decorator, may be less time to write one line of code is input.
If not decorator
def avgrage(): sum = 0 count = 0 avg = 0 while True: num = yield avg sum += num count += 1 avg = sum/count avg_g = avgrage() avg_g.__next__() ret = avg_g.send(10) print(ret) ret = avg_g.send(76) print(ret)
对比而言,加了装饰器可以在输入的时候少写一行代码、
avg.__next__()
************
(⊙﹏⊙),虽然对程序猿来说好像代码更多了。
但是在用户角度来说,更显方便。
输出结果