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__()の返り値で欲しい値を吐くために使う。