对于上一篇“”Python闭包“”随笔中提到的make_averager()函数的如下实现,我们把历史值保存在列表里,每次计算平均值都需要重新求和,当历史值较多时,需要占用比较多的空间并且效率也不高。
>>> def make_averager(): ... series = [] ... def averager(new_value): ... series.append(new_value) ... total = sum(series) ... return total/len(series) ... return averager ...