生成器的进阶,关于send()方法的使用,以及为生成器添加装饰器
Posted 648071634com
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器的进阶,关于send()方法的使用,以及为生成器添加装饰器相关的知识,希望对你有一定的参考价值。
def generator():
print(12)
num=yield 12
print("**",num)
print(52)
yield 445
g=generator()#把这个函数传给g,变成一个生成器
ret=g.__next__()
print(ret)
ret=g.send("hello")#它的效果和__next__相同,在读取下一步内容的同时,给上个yield传个值
print(ret)
#send()使用的注意事项
1.第一次使用生成器的时候,必须要用__next__传值
2.最后一个yield不能获取外部的值
#获取移动平均值
def average():
sum=0
count=0
avg=0
while 1:
num=yield avg
num=yield
sum+=num
count+=1
avg=sum/count
g=average()
g.__next__()
ret=g.send(10)
ret=g.send(20)
print(ret)
def init(f):
def inner(*avgs,**kavgs):
g=f(*avgs,**kavgs)
g.__next__()
return inner
@init
def generator():
avg=0
sum=0
count=0
while 1:
num=yield avg
sum+=num
count+=1
avg=sum/count
avg_g=generator()
avg_g.__next__()
ret=avg_g.send(10)
ret=avg_g.send(30)
ret=avg_g.send(20)
print(ret)
以上是关于生成器的进阶,关于send()方法的使用,以及为生成器添加装饰器的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅关于C/C++内存对齐读取文件产生的问题以及解决方法
我的Android进阶之旅关于Android使用bindService()绑定服务,onServiceConnected()方法是异步回调的问题以及借鉴NotificationManager来优化(代
我的Android进阶之旅关于Android使用bindService()绑定服务,onServiceConnected()方法是异步回调的问题以及借鉴NotificationManager来优化(代