ジェネレータとyield文
入門Python3 4.8
これはC#でもあった反復処理の実装とまったく同じ話ですね。
yield文を使えば、そのyield文があるところまで処理が走り、一旦関数を抜けて処理が進みまたyield文のところから次の処理が再開されるといった感じになってます。
文章だとわけわからんので実装見た方が早いですね。
def foo (): yield 1 yield 2 yield 3 for i in foo(): print(i)
$ py main.py 1 2 3
上記のようにyieldで指定した値がiに格納されていってますね。
このyield文を使ってrange関数と似たような処理をする関数を実装してみます。
def my_range (start,end): i = start # サンプルなのでendよりstartの方が数値が大きい場合を想定しない while(i < end): yield i i += 1 for i in my_range(0,5): print(i)
$ py main.py 0 1 2 3 4
便利な機能ですね、今後も使っていきましょう。