簡體   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