生成器send的用法案例
Posted aizhinong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器send的用法案例相关的知识,希望对你有一定的参考价值。
生成器函数send方法案例:
每输入一个值,求移动平均值,如下:
10 20 30 40 50...
10 15 20 25 30...
def avg_creater(): num = 0 count = 0 avg = 0 while True: num1 = yield avg num += num1 count += 1 avg = num/count g = avg_creater() g.__next__() avg = g.send(10) avg = g.send(20) avg = g.send(30) avg = g.send(40) avg = g.send(50) print(avg) #打印: 30.0
但是每次使用时,第一次读取数据都必须用next接收,所以可以把这一步可以用装饰器函数替代,从而不用每次调用都要先使用next
预激生成器函数:
def avgcorator(f): def inner(*args,**kwargs): g = f(*args,**kwargs) g.__next__() return g return inner @avgcorator def func(): num = 0 count = 0 avg = 0 while True: num1 = yield avg num += num1 count += 1 avg = num / count g = func() avg = g.send(10) avg = g.send(20) avg = g.send(30) avg = g.send(40) avg = g.send(50) print(avg) #打印: 30.0
知识点:
生成器:send
装饰器
以上是关于生成器send的用法案例的主要内容,如果未能解决你的问题,请参考以下文章