生成器进阶
Posted daju
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器进阶相关的知识,希望对你有一定的参考价值。
def generator(): # print(123) # content = yield 1 # print(‘=======‘,content) # print(456) # arg = yield 2 # ‘‘‘‘‘‘ # yield # g1 = generator() # g2 = generator() # g1.__next__() # g2.__next__() # print(‘***‘,generator().__next__()) # print(‘***‘,generator().__next__()) # g = generator() # ret = g.__next__() # print(‘***‘,ret) # ret = g.send(‘hello‘) #send的效果和next一样 # print(‘***‘,ret)
send 获取下一个值的效果和next基本一致
#只是在获取下一个值的时候,给上一yield的位置传递一个数据
#使用send的注意事项
# 第一次使用生成器的时候 是用next获取下一个值
# 最后一个yield不能接受外部的值
生成式实例获取移动平均值
# 获取移动平均值 计算第一排数据的平均值 # 10 20 30 10 # 10 15 20 17.5 # avg = sum/count # def average(): # sum = 0 # count = 0 # avg = 0 # while True: # num = yield avg #先调用avg_g.__next__返回 avg 再此调用avg.send(int)向yield位置传入新的值,同时将此值作为参数参与运算,并返回一个新的运算结果。 # sum += num # 10 # count += 1 # 1 # avg = sum/count # # avg_g = average() # avg_g.__next__() # avg1 = avg_g.send(10) # avg1 = avg_g.send(20) # print(avg1)
再此基础上加入一个装饰器,省去了调用avg._g.__next__这一步
以上是关于生成器进阶的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段