def make_averager(): series = [] def averager(new_value): series.append(new_value) total = sum(series) return total/len(series) return averager avg = make_averager() print(avg(10)) print(avg(11)) print(avg(12)) #局部变量 print(avg.__code__.co_varnames) #('new_value', 'total') #自由变量 print(avg.__code__.co_freevars) #('series',) #series的绑定在返回的avg函数的__closure__属性中。avg.__closure__中的各个元素对应于avg.__code__.co_freevars中的一个名称 #这些元素是cell对象,有个cell_contents属性,保存着真正的值 print(avg.__closure__[0].cell_contents) #[10, 11, 12]
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/9552623.html