[英]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.