美文网首页
生成器_send

生成器_send

作者: Yanl__ | 来源:发表于2019-08-14 09:12 被阅读0次
"""
send注意事项:
 1.第一次使用生成器,使用next获取下一个值
 2.最后一个yield不能接受外部的值
 3.获取下一个值得时候,是给上一个yield的位置传值
"""
def generator():
    print(123)
    content = yield 1
    print('=========', content)
    print(456)
    yield 2
    print(789)
    yield

g = generator()  # 生成一个生成器
ret = g.__next__()
print(ret)
# ret = g.send(None)  # send的效果和next一样。 但是可以传值到函数中,如果不传值 要send(None)
ret = g.send('hello')
print(ret)
ret = g.__next__()
print(ret)

send使用实例

求移动平均数

# send使用实例
# 移动平均数
def average():
    sum = 0
    count = 0
    avg = 0
    while True:
        num = yield avg
        sum += num
        count += 1
        avg = sum / count

avg_g = average()
avg_g.__next__()
avg_1 = avg_g.send(10)
print(avg_1)
avg_2 = avg_g.send(20)
print(avg_2)

预激活版 - 装饰器中执行next

# 装饰器 预激活版
def init(func):
    def inner(*args, **kwargs):
        g = func(*args, **kwargs)
        g.__next__()
        return g
    return inner

@init
def average():
    sum = 0
    count = 0
    avg = 0
    while True:
        num = yield avg
        sum += num
        count += 1
        avg = sum / count

avg_g = average()
avg_1 = avg_g.send(10)
print(avg_1)
avg_2 = avg_g.send(20)
print(avg_2)

相关文章

  • 2019-07-02

    使用send唤醒生成器 如果一创建生成器就send会报错,因为没有yield,也没有ret去接收,但是可以send...

  • Python:yield 高级用法 send、yiled fro

    1. yield 中 send 用法 send 作用-- 生成器函数返回值给调用方;-- 调用方通过 send ...

  • 生成器_send

    send使用实例 求移动平均数 预激活版 - 装饰器中执行next

  • 协程

    从yield说起 当生成器执行到yield的时候,通过send方法向生成器传递一个值,生成器在收到传进来的值之后,...

  • 生成器

    用send启动生成器(next不能传参,send可以) yield 使得函数可以返回一部分结果,暂停执行,如果是r...

  • 生成器yield和send

    带有yield的函数即变为生成器,需要用变量来接受,返回genertor对象,next()方法 和__next__...

  • python的生成器和协程

    上面是一个简单的生成器,在第一次调用g.send(None)的时候,生成器开始从头一直执行到yield处(yiel...

  • Python协程详解:从yield/send到yield fro

    Python中的协程发展历史分为三个阶段: 最初的生成器变形yield/send 引入@asyncio.corou...

  • 协程

    生成器语法 yield 一个对象返回这个对象 暂停这个函数等待下次next重新激活 send与yield的切换...

  • python-复盘-从yield/send到yield from

    Python中的协程大概经历了如下三个阶段: 最初的生成器变形yield/send 引入@asyncio.coro...

网友评论

      本文标题:生成器_send

      本文链接:https://www.haomeiwen.com/subject/vcuwjctx.html