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

Mary-Kate Olsen
發布: 2024-10-25 03:16:02
原創
429 人瀏覽過

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中文網其他相關文章!

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