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

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

  1.生成器函数进阶(一)

1 # 生成器函数进阶 2  3 def generator(): 4     print(123) 5     num = yield 1   # 当第一个__next__发生时,yiled 1先被执行,被返回,停在了这里,之后当send来了后,send的参数先赋值给了yield的左值,之后再执行下一个yield之前的代码 6                     # send()获取yield值之前,会给上一个yield的位置传递一个参数数据,这个数据可以被上一个yield的左值接收 7                     # 使用生成器的send()方法,就是在触发yield时,会将send传递过去的参数赋值到上一个yield的左值位置,然后在执行上一次yield和本次触发yield之间的代码 8     print('----', num) 9     print(456)10     yield 211 12 g = generator()13 ret = g.__next__()14 print('**', ret)15 # send()调用后,会在获取下一个yield值之前,会给上一个yield的位置传递一个参数数据,这个数据可以被上一个yield的左值接收16 ret = g.send('hello')   # ---- hello\n456  和__next__效果类似,只不过多了一个将参数赋值给了上一个yield,可以赋值给上一个yield的左值17 print('**', ret)
View Code

 

  2.生成器函数进阶(二)

1 # 获取移动平均值(预激生成器的装饰器的例子:使用装饰器激活生成器) 2 def init(func): 3     def wrapper(*args, **kwargs): 4         g = func(*args, **kwargs) 5         next(g) 6         return g 7     return wrapper 8  9 @init   # ==> average = init(average)10 def average():11     sum = 012     count = 013     avg = 014     while True:15         num = yield avg16         sum += num17         count += 118         avg = sum / count19 20 avg_g = average()21 #avg_g.__next__()22 avg1 = avg_g.send(10)23 print(avg1)24 25 26 27 # python3中新加入的生成器函数知识点 yield from28 def generator():29     a = 'abcde'30     b = '12345'31     yield from a    # 从一个容器中,一个一个返回其中的元素32     yield from b33 34 g = generator()35 for i in g:36     print(i)    # a\nb\nc\nd\nd\ne\n1\n2\n3\n4\n5\n
View Code

 

转载于:https://www.cnblogs.com/whylinux/p/9589128.html

你可能感兴趣的文章
【swing】 BoxLayout布局
查看>>
Android 属性动画(Property Animation)完全解析 (下)
查看>>
GC overhead limit exceeded
查看>>
JDBC学习之三
查看>>
CSS3 渐变(Gradients)
查看>>
Windows7关机、重启、待机、休眠命令
查看>>
如何在Xcode8上安装插件
查看>>
JQuery对CheckBox的一些相关操作
查看>>
IIS应用程序池的作用
查看>>
Project configuration is not up-to-date with pom.xml
查看>>
查询批次上课时间
查看>>
Ext.data.Store 中 data 的克隆原理
查看>>
Linux文件内容去重
查看>>
设计模式 之 状态模式
查看>>
Java泛型(一)ArrayList和HashMap
查看>>
redis笔记 (番外篇)——从RDBMS到NoSQL的架构演化及CAP原理
查看>>
iOS中根据已有经纬度定位并显示在地图上
查看>>
Git同时使用多个 ssh key
查看>>
hdu 2501
查看>>
findbugs错误类型对照表
查看>>