\

Pythonのyieldとは?

Pythonの yield は、ジェネレータ関数を定義する際に使用されるキーワードで、イテレータを返して値を逐次的に生成します。この記事では、yieldの概念と利点、forループやyield fromの使い方、実践的な例などを詳しく紹介します。

イテレータとジェネレータ

Pythonにはイテレータとジェネレータという概念があります。イテレータとは、反復して要素を取り出すことが出来る型のことを言います。Pythonのリストやセット、辞書型はイテレーションすることが出来るので、これらのオブジェクトはイテレータになります。

また、ジェネレータは、イテレータの一種になります。要素を取り出すごとに処理を実行して、要素を生成することが出来ます。そしてこのジェネレータを、yieldを使って作ることが出来ます。

yieldの基本的な使い方

yieldは、基本的には関数の中で使われる文になります。以下がその具体例です。

def simple_generator():
    yield 1
    yield 2
    yield 3

for value in simple_generator():
    print(value)

上記のコードを実行すると、「1」「2」「3」が順番に出力されます。simple_generator 関数はジェネレータ関数であり、「yield」を使用して値をひとつずつ生成。forループはジェネレータから値を取得し、全ての値が取り出されるとループが終了します。

yield fromの使い方

yield from は、Python 3.3 以降で利用可能な構文で、ジェネレータの中で別のジェネレータの値をyieldするためのものです。以下にその使用例を示します。

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

def count_up_to_twice(n):
    yield from count_up_to(n)
    yield from count_up_to(n)

for number in count_up_to_twice(5):
    print(number)

このコードでは、count_up_to_twice 関数が count_up_to 関数のジェネレータを2回 yield しています。

まとめ

Pythonの yield は、ジェネレータ関数を定義する際に使用されるキーワードで、イテレータを返して値を逐次的に生成します。大量のデータを一度にロードする必要がなく、必要なときに値を生成できるため、大規模なデータを扱う際や、リアルタイムでデータを処理する必要がある場合に、とても有効です。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です