闭包 为何返回的是list里最后一个数,而不是list?
Topic source我是这样理解的,闭包返回的并不是计算结果,而是计算公式
def count():
fs = []
for i in range(1, 4):
def f():
return i*i
fs.append(f)
return fs
f1, f2, f3 = count()
这段代码里面,在函数内的fs里面存放的是i*i,这时候返回的是[i*i,i*i,i*i],当分别调用f1,f2,f3时,才会进行计算,而在count函数运算完成之后,i变为3,所以在运算f1,f2,f3时,变成[3*3,3*3,3*3],所以结果就都是9
- 1
Allwritten
fs = []
return fs