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 ステートメントと yield ステートメントの両方を同時に使用すると、エラーが発生します。ただし、この動作は Python 3.3 で変更されました。

次のコードを考えてみましょう:

<code class="python">def f():
  return 3
  yield 2</code>
ログイン後にコピー

x = f() を呼び出すとジェネレーターが作成され、x.__next__() はStopIteration 例外。この動作は、値 3 を返す単純な return 3 とは異なります。

これは、Python 3.3 では return が返されるためです。ジェネレーター内では、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!