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