Pythonでは、yieldyield fromはジェネレータを作成するための重要なキーワードです。

yieldとは

yieldはPythonのジェネレータ関数内で使用され、一連の結果を生成します。例えば、次のような関数fooがあります。

def foo():
    for i in range(10):
        yield i

この関数を呼び出すと、0から9までの値が順番に生成されます。

yield fromとは

yield fromはPython 3.3から導入され、ジェネレータの中で別のジェネレータやイテラブルオブジェクトから値を生成するための構文です。yield fromの後に続く式が評価された結果としてイテラブルオブジェクトになる必要があります。

例えば、次のような関数buzzがあります。

def buzz():
    i = 0
    for j in range(10):
        i += j
        yield j
    return i

この関数をyield fromを使って呼び出すと、returnの値まで取得できます。

def getter():
    x = yield from buzz()
    yield x

ただし、yield fromは関数内でしか記述できないため、注意が必要です。

まとめ

  • yieldを使うとジェネレータを生成できます。
  • yieldreturnの併用は基本的に難しいです。
  • yield fromを使うとreturnの値まで取得できます。
  • yield fromは関数内でしか使えません。

以上、Pythonのyieldyield fromの違いについて説明しました。これらのキーワードを理解することで、Pythonのジェネレータをより効果的に利用することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です