Pythonのyield from
は、反復可能オブジェクト(イテラブル)またはイテレータを使って関数内で定義します。この記事では、その基本的な使い方と応用例について解説します。
基本的な使い方
Python公式ドキュメントによれば、yield from iterable
は本質的にはfor item in iterable: yield item
への単なる速記法です。つまり、yield from
を使うと、イテラブルなオブジェクトの各要素を順にyieldすることができます。
def generator():
yield from [1, 2, 3, 4, 5]
for num in generator():
print(num)
上記のコードは、1から5までの数字を順に出力します。
応用例:ジェネレータのチェーン
yield from
は、ジェネレータ関数(サブジェネレータ)を呼び出す際にも使えます。これにより、ジェネレータのチェーンを作ることができます。
def sub_generator():
for i in range(5):
yield i
def main_generator():
yield from sub_generator()
for num in main_generator():
print(num)
このコードも、1から5までの数字を順に出力します。しかし、この場合、数字の生成はsub_generator
が担当しています。main_generator
は、その結果をそのままyieldしています。
注意点
yield from
は関数内でしか記述できません。また、yield from
の後にはイテラブルなオブジェクトを指定する必要があります。
以上、Pythonのyield from
についての基本的な使い方と応用例を解説しました。この機能を理解することで、Pythonのジェネレータをより深く理解し、効率的にコードを書くことができます。