Discuss / Python / 闭包 为何返回的是list里最后一个数,而不是list?

闭包 为何返回的是list里最后一个数,而不是list?

Topic source

Allwritten

#1 Created at ... [Delete] [Delete and Lock User]

fs = [] 

return fs

我是这样理解的,闭包返回的并不是计算结果,而是计算公式

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

Reply