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
さらに、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 サイトの他の関連記事を参照してください。