zoukankan      html  css  js  c++  java
  • 10-5 生成器进阶内容以及例子

    send获取下一个值的效果和next基本一致
    只是在获取下一个值得,给上一个值的位置传递一个数据
    使用send的注意事项
    1.第一次使用生成器的时候,用next获取下一个值
    2.最后一个yield不能接受外部的值(若实在有需要,可以用最后一个yield接胡搜外部的值,然后在最后写上一句yield,即返回一个空)
    def generator():
        print(123)
        content = yield 1
        print('=====',content)
        yield 2
        # print(789)
    
    g = generator()
    ret = g.__next__()
    print('***',ret)
    # ret = g.send(None)#send的效果和next一样
    ret = g.send('hello')
    print('***',ret)
    

    结果:

    123
    *** 1
    ===== hello
    *** 2

    实例:获取移动平均值

    def average():
        sum = 0
        count = 0
        avg = 0
        while True:
            num = yield avg
            sum += num
            count += 1
            avg = sum / count
    avg_g = average()
    avg_g.__next__()
    avg1 = avg_g.send(10)
    avg1 = avg_g.send(20)
    avg1 = avg_g.send(40)
    print(avg1)
    

      

  • 相关阅读:
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
  • 原文地址:https://www.cnblogs.com/Cheryol/p/9746154.html
Copyright © 2011-2022 走看看