首頁  >  文章  >  後端開發  >  Python 生成器中的 Return 和 Yield 如何運作?

Python 生成器中的 Return 和 Yield 如何運作?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-25 03:16:02410瀏覽

How Do Return and Yield Work in Python Generators?

Python 生成器中的Return 和Yield

在3.3 版本之前的Python 中,在生成器函數定義中同時使用return 和函數定義中同時使用return ield 語句會導致導致錯誤。然而,這種行為在 Python 3.3 中發生了變化。

考慮以下程式碼:

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

呼叫 x = f() 將建立一個生成器,並且 x.__next__() 將引發一個停止迭代異常。此行為與簡單的 return 3 不同,後者會傳回值 3。

這是因為在 Python 3.3 中,return ;現在,生成器內相當於 raise StopIteration()。因此,StopIteration 異常包含上面程式碼片段中的值 3。存取異常的 value 屬性將檢索該值。

此外,yield from 允許 делегировать 生成器到其他生成器。考慮以下範例:

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

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

for _ in g():
    pass</code>

此程式碼列印 1。 g 將執行委託給 f,並將 f 傳回的值(即 1)指派給 x。然而,f 中的yield 2 語句並未執行,因為執行已委託給g。

以上是Python 生成器中的 Return 和 Yield 如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn