Pythonのyieldがどんな動きをするのか

yieldってあんまり使ったことないので、調べてみました。
PHPにもあるらしいです。

yieldとは

基本の動きはreturnです。
ただ次に関数が呼ばれたときに次の行から開始します。
ジェネレーター構文という。

from datetime import date, timedelta

def date_range(start, stop, step = timedelta(1)):
    current = start
    print('start')
    while current < stop:
        print('startYeald')
        yield current
        print('endYeald')
        current += step

for date in date_range(date(2017, 4, 1), date(2017, 4, 5)):
    print(date.strftime("%Y%m%d"))

出力結果

start
startYeald
20170401
endYeald
startYeald
20170402
endYeald
startYeald
20170403
endYeald
startYeald
20170404
endYeald

いつ使う?

for分の場所を共通化したい場合に使えますね!

参考
https://qiita.com/ground0state/items/508e479335d82728ef91

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です