- コルーチンは停止・再開することができる関数
- yieldで停止
- yieldの戻り値に値をsendして再開
average.py
#!/usr/bin/python
def average():
total = 0.0
count = 0.0
average = 0.0
while True:
# コルーチンのポイント
# - yieldでaverageを生成して関数が停止
# - sendから値を受け取るとそれをvalueに代入して関数が再開
value = yield average
total += value
count += 1.0
average = total/count
avg = average()
avg.next()
print avg.send(10.0)
print avg.send(20.0)
print avg.send(30.0)
- 結果
10.0
15.0
20.0