#ジェネレーターとは
「何らかの値を連続的に生成する」反復可能なオブジェクトであり、ジェネレーター関数を用いて定義する。
ジェネレーターはリストやタプルなどと同様に、反復処理に利用できる(ジェネレーター関数の実際の戻り値は反復可能な「ジェネレーター」オブジェクトになる。
#単純なジェネレーター
「引数に指定された値未満の整数列を返す」反復可能オブジェクトを返す。
まずgen関数の出力が先行し、yieldで返された値が呼び出し元のcntに渡され、print(cnt)される。
通常のforループなら呼び出し元に戻るまでにループし尽くすが、yieldすることで一旦戻っている。
#サンプルプログラム
Sample.py
def gen(n):
for num in range(n):
print("generated")
yield num
for cnt in gen(10):
print(cnt)
#出力結果
generated
0
generated
1
generated
2
generated
3
generated
4
generated
5
generated
6
generated
7
generated
8
generated
9