Categories: Python

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

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

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

7か月 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

7か月 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

7か月 ago

【Unity】割合から数値に数値から割合に変換する

この記事では、割合から数値に変換する関数…

7か月 ago

【Python】抽象クラスを定義する方法

この記事では、Pythonで抽象クラスを…

7か月 ago