def gen_123(): ※定義は通常の関数と同じ
yield 1 ※return に対して yield (シールドと読む)で値を返却する
yield 2 ※yield は複数個記述できる
yield 3
g = gen_123() ※変数に代入するには、関数と違いカッコが必要です!
print( next( g ) ) ※ 1を返却する
print( next( g ) ) ※ 2を返却する
print( next( g ) ) ※ 3を返却する
print( next( gen_123() ) ) ※ 1を返却する
※インスタンスにしないと内部的に順番を記憶できない
print( next( gen_123() ) ) ※ 1を返却する
print( next( g ) ) ※ エラーとなる
※yield の個数以上の呼び出しを行うとエラーとなる(ポインタは戻せません!)
g = gen_123()
for i in g:
print(i) ※ 1 2 3 と取得できる
for i in gen_123():
print(i) ※ 1 2 3 と取得できる
※for文ならインスタンスにしなくても大丈夫。。