Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ジェネレーター関数とyieldの紹介 | Pythonイテレーターとデコレーターの習得
Pythonにおける関数型プログラミングの概念

bookジェネレーター関数とyieldの紹介

メニューを表示するにはスワイプしてください

ジェネレーター関数は、Pythonにおいてイテレーターを簡潔かつ読みやすい方法で作成できる特別な関数。通常の関数が単一の値を返して終了するのに対し、ジェネレーター関数は実行を一時停止し、後で再開できるため、値の連続を一つずつ生成可能。

Note
定義

yield は、ジェネレーター関数内で値を生成し、関数の状態を一時停止するために使用されるPythonのキーワード。ジェネレーターが再開されると、中断した位置から処理を続行。

これにより、中間リストを作成せずに一度に一つずつシーケンスを反復でき、コードのメモリ効率が向上。

ジェネレーター関数の仕組み

ジェネレーター関数は通常の関数と似ているが、yield の代わりに return キーワードを使用。Pythonが yield 文を検出すると、関数の実行を一時停止し、呼び出し元に値を返す。次に値を要求すると、関数は中断した位置から再開。

ジェネレーター関数の動作手順

  1. def を使って関数を定義し、少なくとも1つの yield 文を含める;
  2. 関数を呼び出しても、すぐに中のコードは実行されず、ジェネレーターオブジェクトが返される;
  3. 次の値を要求するたび(next()for ループを使用)、関数は yield に到達するまで実行される;
  4. yield 文は呼び出し元に値を返し、関数の状態を一時停止;
  5. 次の値が要求されると、最後の yield の直後から処理を再開;
  6. 値がなくなるか、return またはコードの末尾に到達するまで関数は続行。

ジェネレーター関数を使う利点

  • 大きなリストを作成せずに、1つずつ要素を生成することでメモリを節約;
  • データストリームやシーケンスに対して、読みやすく保守しやすいコードを記述可能;
  • すべてをメモリに読み込まず、無限または非常に大きなデータセットにも容易に対応。

ジェネレーター関数は効率的なデータ処理のための強力なツールであり、Pythonの関数型プログラミングスタイルを習得する上で不可欠。次に、実際のコード例を用いてジェネレーター関数の書き方と使い方を解説。

question mark

Python のジェネレーター関数において、yield キーワードは何をしますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  6
some-alt