繁体   English   中英

Python生成器 - float((yield))?

[英]Python generators - float( ( yield ) )?

我正在阅读以下有关Python生成器的教程http://excess.org/article/2013/02/itergen2/

它包含以下代码:

def running_avg():
    "coroutine that accepts numbers and yields their running average"
    total = float((yield))
    count = 1
    while True:
        i = yield total / count
        count += 1
        total += i

我不明白float((yield))的含义。 我认为yield用于从发生器“返回”一个值。 这是对yield的不同用途吗?

它是协同程序的扩展yield语法

阅读本文: http//www.python.org/dev/peps/pep-0342/

是的,通过发送到发电机也可以收到 yield

>>> avg_gen = running_avg()
>>> next(avg_gen)  # prime the generator
>>> avg_gen.send(1.0)
1.0
>>> print avg_gen.send(2.0)
1.5

yield表达式返回传递给generator.send()方法的任何值。 请参阅yield表达式文档。

yield在Python 2.5中yield了表达; 之前它只是一个声明,只生成了发电机的值。 通过使yield成为表达式并添加.send() (以及其他方法来发送异常),生成器现在可以用作简单的协同程序 ; 请参阅PEP 342了解此变更的初步动机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM