zoukankan      html  css  js  c++  java
  • day14-生成器进阶

    1.send()

    '''
    def generator():
        print(123)
        yield 1
        print(456)
        yield 2
        print(789)
    
    g = generator()
    ret = g.__next__()
    print(ret)
    ret = g.send(None) # send的效果和_next_一样
    print(ret)
    '''
    
    def generator():
        print(123)
        content = yield 1
        print(content)
        print(456)
        yield 2
    
    g = generator()
    ret = g.__next__()
    print(ret)
    ret = g.send('hello') # send的效果和_next_一样
    print(ret)
    # send和_next_效果一样,他在打印出第二个yield之前,还将send里面的hello传给content,所以也会打印出hello。
    #result:
    # 123
    # 1
    # hello
    # 456
    # 2

    使用send注意事项:

    (1)第一次使用生成器,必须用_next_获取值。

    (2)最后一个yield,不能接收外部的值。

    2.计算移动平均值

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

    3.yield from 变量

    def generator():
        a = '12345'
        b = 'abcde'
        for i in a: # 方法一
            yield i
        yield from b # 方法二
    g = generator()
    for i in g:
        print(i)
  • 相关阅读:
    跨域资源共享 CORS 详解
    C# 每月第一天和最后一天
    jexus http to https
    ASP.NET MVC 路由学习
    jexus
    centos7 添加开机启动项
    jexus docker
    HTTP2.0新特性
    jexus配置支持Owin
    Autofac Named命名和Key Service服务
  • 原文地址:https://www.cnblogs.com/missdx/p/10995090.html
Copyright © 2011-2022 走看看