Python PR

【Python】yield from の使い方

記事内に商品プロモーションを含む場合があります

この記事では、yield fromの使い方について解説します。

この記事でわかること
  • yield fromの使い方
  • yield fromでできること

通常のジェネレータの使い方は以下の記事を参考にしてください。

Linkジェネレータの定義と使い方を解説

yield fromは、バージョン3.3で追加された機能です

yield fromの定義

yield fromは、反復可能オブジェクト、またはイテレータを使って関数内で定義します。

def func(): yield from 反復可能オブジェクト、またはイテレータ

複数のyield fromを定義することもできます。

def func(): yield from 反復可能オブジェクト、またはイテレータ yield from 反復可能オブジェクト、またはイテレータ yield from 反復可能オブジェクト、またはイテレータ

使ってみる

複数の反復可能オブジェクト、またはイテレータを1つのジェネレータとして扱うことができます。

def gen(): yield from ['a', 'b', 'c'] yield from (1, 2, 3) # 出力 for item in gen(): print(item)

実行結果

a b c 1 2 3

もちろん、ジェネレータをまとめることもできます。

def gen1(): yield 'a' yield 'b' yield 'c' def gen2(): yield from [1, 2, 3] def gen(): yield from gen1() yield from gen2() for item in gen(): print(item)

実行結果

a b c 1 2 3

何ができるのか?

yield fromは、指定された反復可能オブジェクト、またはイテレータをジェネレータオブジェクトとして返します。さらにyield fromは複数定義することができます。

複数定義することで「いくつかの反復可能オブジェクト、またはイテレータを1つのジェネレータオブジェクトとしてまとめて返すことができる」ということになります。

つまりyield fromは、大きなジェネレータをいくつかに分割した際にあとで1つにまとめるための機能と言えます。

まとめ

この記事では、yield fromの使い方について解説しました。

以下の2点を押さえておきましょう。

  • Python 3.3 で追加された機能
  • いくつかのイテレータなどをまとめるために使う

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ