美文网首页
python yield 用法

python yield 用法

作者: 小五_555 | 来源:发表于2016-07-13 11:24 被阅读0次

介绍一个我个人关于python yield的一点小看法

python代码中, 凡是带yield关键字的都被视为一个generator。代码可以从yield中断, 同时也可以从yield处传入值进去, 这样就有一点消费者的概念了。

def avg():
    total = 0
    res = 0
    nums = 0
    try:
        while True:
            new_num = yield res
            nums += 1
            total += new_num
            res = total / nums
    except StopIteration:
        print("avg stop....")

这段代码是计算平均值的, 怎么使用呢?

a = avg() # 计算平均值的consumer
next(a) # run to the yield
a.send(1) # return 1.0
a.send(2) # return 1.5
a.close()

是不是有点消费者的感觉了。a是消费者, 当需要计算的时候,a.send(value), 是不是很方便呢。
还有些小问题, 每一次我们想用这样的生成器的时候,都需要调用next(a)来启动,有点不方便,写个装饰器来修改一下。

from functools import wraps
def gen(func):
    @wraps(func)
    def wrapper(*argv, **kw):
        print("**wrap a generator to next yield")
        temp = func(*argv, **kw)
        next(temp)
        return temp
    return wrapper
#########################
@gen
def avg():
......

这样, 不用再写next了, 有点更像消费者了。

相关文章

  • python yield和yield from用法总结

    python yield和yield from用法总结 yield 作用: 注: generator的next()...

  • python中yield的用法

    python中yield的用法详解——最简单,最清晰的解释

  • yeild的用法

    python中yield的用法详解——最简单,最清晰的解释

  • Python yield

    Python yield的用法详解 如何快速的对yield有一个初步的了解,那么首先我们可以先将yield看做是r...

  • python yield用法

    当函数中包含yield时,函数被调用后并没有执行,可以通过next()语句让它执行,直到遇到yield表达式处。如...

  • python yield 用法

    介绍一个我个人关于python yield的一点小看法 python代码中, 凡是带yield关键字的都被视为一个...

  • python的生成器是怎么回事

    Python基础 - yield 用法详解 转载:http://www.pythontab.com/html/20...

  • Python Yield 精髓

    对 Python 中的 Yield 一直理解的不够深刻,甚至存在误解。遇到一个神奇的用法后(多个 yield 连续...

  • python中yield的用法详解(转)

    原链接:python中yield的用法详解——最简单,最清晰的解释首先,如果你还没有对yield有个初步分认识,那...

  • 31.python中的yield

    python中yield的用法详解——最简单,最清晰的解释 首先,如果你还没有对yield有个初步分认识,那么你先...

网友评论

      本文标题:python yield 用法

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