keisukeのブログ

***乱雑です!自分用のメモです!*** 統計や機械学習の勉強と、読み物を書く練習と、備忘録用のブログ

yield

Improve Your Python: 'yield' and Generators Explained
yield文はgenerator functionを作るために必要。
yield文をひとつでも持つ関数はgenerator functionと呼ばれる。
また、generator fucntionのインスタンスクロージャ?(gen = gen_func()のgenみたいなやつ)は単にgeneratorと呼ばれる。
yieldはreturnのように働き、generatorがyield文に出会うとそこでその関数を抜ける。
ただし、yieldはreturnと違い、どこで抜けたかを覚えていて、次にその関数が呼ばれるときはその抜けた次の行から再開する。
局所変数なども同時に冷凍してある。

generatorは__next__()で次の呼び出しができるのでforループに用いることができる。

基本的にはyield文は__next__()の返り値で欲しい値を吐くために使う。