ジェネレーター
ジェネレター
Pythonのシーケンスそ作成するオブジェクトである。ジェネレター
があれば、シーケンス全体を作ってメモリに格納しなくても、(巨大に
なることがある)シーケンスを反復処理できる。ジェネレーターは、イテ
レータのデータソースになることが多い。
range()で1から100までのづべての整数の合計をしている
>>>sum(range(1, 102))
5050
ジェネレータは、反復処理のたびに、最後に呼び出されたどこにいたかを
管理し、次の値を返す。これは、以前の呼び出しにつて何も覚えておらず
、いつも同じ状態で1行目を実行する通常の関数とは異なる。
大きくなる可能性があるシーケンスを作りたいが、ジェネター内包表記に
収めるにはコードが大きすぎるときには、ジェネレーター関数を書く
値をreturnで返す代わりにyield文で返すことを除けば、通常の関数と
同じです。
>>>def my_range(first=0, last=10, step=1):
>>> number = first
>>> while number < last:
>>> yield number
>>> number += step
>>>a = my_range
>>>print(a)
>>>ranger = my_range(1,5)
>>>for x in ranger:
>>> print(x)
1
2
3
4