Python 中的生成器產量和回報如何互動?

Barbara Streisand
發布: 2024-10-25 06:05:29
原創
914 人瀏覽過

How Do Generator Yield and Return Interact in Python?

Python 中的生成器Yield 和Return 交互作用

在Python 3.3 之前,在函數定義中組合return 和Yield 會導致錯誤。但是,在 Python 3.3 及更高版本中,此行為已更新。

Python 3.3 行為

在 Python 3.3 中,產生器函數中的 return 語句現在以類似方式處理到 raise StopIteration() 語句。因此,在生成器中同時使用 return 和 yield 現在相當於引發具有指定值的 StopIteration 異常。

範例:

考慮以下程式碼:

<code class="python">def f():
    return 3
    yield 2</code>
登入後複製

當呼叫 f() 函數時,它將不再引發執行階段錯誤。相反,生成器物件(x) 的__next__() 函數會引發StopIteration 異常,其值為3:

<code class="python">x = f()
try:
    print(x.__next__())
except StopIteration as e:
    print(e.value)  # Prints "3"</code>
登入後複製

產生回傳值

If使用yield from語法委託產生器函數,return語句的回傳值將是委託生成器的結果。

範例:

<code class="python">def f():
    return 1
    yield 2

def g():
    x = yield from f()
    print(x)

# Iterate through the generator:
for _ in g():
    pass  # Prints "1"</code>
登入後複製

在此範例中,f() 產生器使用yield from 委託給g() 產生器。結果,f() 生成器中 return 1 傳回的值就變成了 g() 生成器的結果。

以上是Python 中的生成器產量和回報如何互動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!