Python3発展 ジェネレータ

 

ジェネレータ

 

ジェネレータとは、シーケンスを作成するオブジェクトです。

  • シーケンス:順番に並んだ、連続

ジェネレータ全体を作成し、メモリに格納しなくてもシーケンスを反復処理することができます。

 

これもジェネレータの1つです。

 

range()関数とは

 

yield 文

 

yield文は、return文と似ているようで少し異なります。

書式

 

return文

  • 関数の処理を終了
  • 戻り値を返す。

yield文

  • 関数の処理を一時停止
  • 戻り値を返す。
  • 一時停止したところから処理を再開する。

 

 

ジェネレータの実装

 

大きいシーケンスを作成したい時、ジェネレータ内包表記に収められない場合はジェネレータ関数を記述します。

 

range()関数 と同じ処理結果を出力するジェネレータ関数を定義します。

 

関数処理の説明

  1. 関数を呼び出す時、デフォルト仮引数が決められているので、実引数を指定する必要はない。
  2. c の値が end より小さければ反復処理する。
  3. c の値を一旦返して、c に step の値が足される。
  4.  2. の条件で 3.が繰り返えされる。

 

関数を呼び出すと、ジェネレータオブジェクトを返していることがわかります。

 

これで作成したジェネレータを for 構文 でもちろん使うことができます。

 

 

フォローする

スポンサーリンク


Python

Posted by pythonista