zoukankan      html  css  js  c++  java
  • 生成器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
    装饰器




  • 相关阅读:
    Java文件读取
    Java继承
    JAVA程序提示错误:需要class,interface或enum解决方法
    SQL 修改列名
    转 父表字表统计查询的sql练习
    powerdesigner12.5入门教程
    现实世界
    oracle添加联合主键
    hashtable的用法
    JQ 1
  • 原文地址:https://www.cnblogs.com/aizhinong/p/11378062.html
Copyright © 2011-2022 走看看