ジェネレータ関数

ジェネレータ関数(Generator Function)は、Pythonにおいてジェネレータ(Generator)を作成するための特殊な関数です。ジェネレータ関数は通常の関数と似ていますが、yield キーワードを含み、値を生成するための一時的なポイントとして機能します。ジェネレータ関数が呼び出されると、ジェネレータオブジェクトが返され、そのジェネレータオブジェクトはイテレータとして振る舞います。

ジェネレータ関数の特徴と用途について説明します:

  1. yield ステートメント:

    • ジェネレータ関数内で yield ステートメントを使用して値を生成できます。yield は値を生成し、関数の実行を一時停止させます。その後、関数の状態は保持され、次回の呼び出しで続きから実行されます。
  2. メモリ効率:

    • ジェネレータは要素を一度にすべてメモリに読み込む必要がないため、大規模なデータセットの処理に適しています。これにより、メモリの使用効率が向上します。
  3. 無限のシーケンス:

    • ジェネレータ関数を使用すると、無限のシーケンスを生成できます。例えば、無限のフィボナッチ数列を生成することができます。

以下はジェネレータ関数の例です:

python
def countdown(n): while n > 0: yield n n -= 1 # ジェネレータ関数からジェネレータオブジェクトを作成 gen = countdown(5) # イテレータとしてジェネレータを使用 for value in gen: print(value)

この例では、countdown ジェネレータ関数が定義され、ジェネレータオブジェクト gen が作成されます。gen ジェネレータオブジェクトは for ループを使用して値を逐次取り出し、それを印刷します。ジェネレータ関数により、要素を逐次生成しながらメモリの使用を最小限に抑えることができます。