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 で追加された機能
  • いくつかのイテレータなどをまとめるために使う

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