码迷,mamicode.com
首页 > 其他好文 > 详细

生成器的扩展 ------ send() 方法

时间:2017-09-05 13:34:22      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:one   str   div   send   fun   扩展   改变   end   开始   

生成器的 send() 方法

g.send (‘A‘)


1 send 和 next 的工作的起止位置是完全相同的

2 send 可以把一个值作为 信号量 传递到函数中去

3 并且 在生成器开始 只能先使用next

4 send(‘a‘)改变上一次yield的内容 可以用yield 返回同一个改变的值来返回

#  def fun():
#     print(1)
#     yield 2  #888
#     print(3)
#     value=yield 4    #value---None
#     print(6)
#     yield value
#
# g=fun()
# print(g.__next__())
# print(g.send(888))
# print(g.__next__())

 

  ---------------------------生成器 预激 函数-------------------------------

def wrapper(func):
    def inner(*args,**kwargs):
        re=func()
        re.__next__()
        return re
    return inner

@wrapper
def average_fun():
    total=0
    count=0
    average=0
    while True:
        value=yield average
        total+=value
        count+=1
        average=total/count

g=average_fun()
print(g.send(30))
print(g.send(20))
print(g.send(20))

 

生成器的扩展 ------ send() 方法

标签:one   str   div   send   fun   扩展   改变   end   开始   

原文地址:http://www.cnblogs.com/big-handsome-guy/p/7477988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!