博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之路----生成器函数进阶
阅读量:7027 次
发布时间:2019-06-28

本文共 1223 字,大约阅读时间需要 4 分钟。

def generator():        print(123)        yield 1        print(456)        yield 2        g = generator()ret = g.__next__()print('***'ret)ret = g.send(None)  #send 效果和 next一样print('***'ret)
next与send

归纳:

1.send 获取下一个值得效果和next基本一致2.只是在获取下一个值得时候,给上一个yield的位置传一个参数

使用send的注意事项

1.第一次使用生成器的时候,必须使用next获取一个值2.最后一个yield不能接受外部的值

 

def average()    sum = 0    count = 0    avg = 0    while 1:        num = yield avg        sum += num        count += 1        avg = sum / countavg_g = average()avg_g.__next__()avg1 = avg_g.send(10)print(avg1)
获取移动平均值:

 

def init(func):    def inner(*args, **kwargs):        ret = func(*args, **kwargs)        g.__next__()        return g    return inner@initdef average():    sum = 0    count = 0    avg = 0    while 1:        num = yield avg        sum += num        count += 1        avg = sum / countg = average()avg1 = g.send(10)print(avg1)
预激生成器的装饰器

 

python3.X----->yield from

def generator():    a = '123'    b = 'abc'    for i in a:        yield i    for i in b:        yield ig = generator()for i in g:    print(i)
原方法
def generator():    a = '123'    b = 'abc'    yield from a    yield from bg = generator()for i in g:    print(i)
yield from方法:

 

转载于:https://www.cnblogs.com/TheLand/p/8183927.html

你可能感兴趣的文章
解决$.ajax请求在ie8下失效问题
查看>>
作业6
查看>>
Linux 定时任务
查看>>
数据库连接池
查看>>
软件工程作业1
查看>>
Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
查看>>
【leetcode】522. Longest Uncommon Subsequence II
查看>>
解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】...
查看>>
第三篇 android 应用开发模式之MVC模式及Observer模式
查看>>
NABCD分析
查看>>
会议1.9
查看>>
ASP.NET MVC 小牛之旅4:ASP.NET MVC的运行生命周期
查看>>
linux配置Java(JDK)环境变量
查看>>
Java第四次作业--面向对象高级特性(继承和多态)
查看>>
课后习题
查看>>
ELK6 收集不同来源的日志并做区分
查看>>
JavaScript基础对象创建模式之单体/单例模式(Singleton)
查看>>
一张图搞定OAuth2.0
查看>>
Docker相关知识整理
查看>>
Django 中间件
查看>>