Pythonでは、yield
とyield from
はジェネレータを作成するための重要なキーワードです。これらのキーワードは、関数内で使用され、関数をジェネレータに変換します。
yieldとは
yield
はPythonのジェネレータ内で使用されるキーワードで、関数がジェネレータとして動作するようにします。yield
を使用すると、関数は値を一度に1つずつ生成し、その状態を保持します。これにより、次にジェネレータが呼び出されるときに、前回停止した場所から処理を再開することができます。
def foo():
for i in range(10):
yield i
for k in foo():
print(k)
上記のコードでは、foo
関数は0から9までの値を一度に1つずつ生成します。
yield fromとは
yield from
はPython 3.3で導入され、ジェネレータの中で別のジェネレータを簡単に呼び出すことができます。yield from
を使用すると、サブジェネレータのすべての値が親ジェネレータに直接送信されます。
def buzz():
i = 0
for j in range(10):
i += j
yield j
return i
def getter():
x = yield from buzz()
yield x
上記のコードでは、buzz
関数は0から9までの値を一度に1つずつ生成し、その合計を返します。getter
関数はyield from
を使用してbuzz
関数から値を取得し、その結果を生成します。
まとめ
yield
とyield from
はPythonのジェネレータを作成するための重要なキーワードです。これらのキーワードを理解し、適切に使用することで、効率的なコードを書くことができます。