[英]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
语法
是的,通过发送到发电机也可以收到 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.