ジェネレーター関数とyieldの紹介
メニューを表示するにはスワイプしてください
ジェネレーター関数は、Pythonにおいてイテレーターを簡潔かつ読みやすい方法で作成できる特別な関数。通常の関数が単一の値を返して終了するのに対し、ジェネレーター関数は実行を一時停止し、後で再開できるため、値の連続を一つずつ生成可能。
定義
yield は、ジェネレーター関数内で値を生成し、関数の状態を一時停止するために使用されるPythonのキーワード。ジェネレーターが再開されると、中断した位置から処理を続行。
これにより、中間リストを作成せずに一度に一つずつシーケンスを反復でき、コードのメモリ効率が向上。
ジェネレーター関数の仕組み
ジェネレーター関数は通常の関数と似ているが、yield の代わりに return キーワードを使用。Pythonが yield 文を検出すると、関数の実行を一時停止し、呼び出し元に値を返す。次に値を要求すると、関数は中断した位置から再開。
ジェネレーター関数の動作手順
defを使って関数を定義し、少なくとも1つのyield文を含める;- 関数を呼び出しても、すぐに中のコードは実行されず、ジェネレーターオブジェクトが返される;
- 次の値を要求するたび(
next()やforループを使用)、関数はyieldに到達するまで実行される; yield文は呼び出し元に値を返し、関数の状態を一時停止;- 次の値が要求されると、最後の
yieldの直後から処理を再開; - 値がなくなるか、
returnまたはコードの末尾に到達するまで関数は続行。
ジェネレーター関数を使う利点
- 大きなリストを作成せずに、1つずつ要素を生成することでメモリを節約;
- データストリームやシーケンスに対して、読みやすく保守しやすいコードを記述可能;
- すべてをメモリに読み込まず、無限または非常に大きなデータセットにも容易に対応。
ジェネレーター関数は効率的なデータ処理のための強力なツールであり、Pythonの関数型プログラミングスタイルを習得する上で不可欠。次に、実際のコード例を用いてジェネレーター関数の書き方と使い方を解説。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 6
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 4. 章 6