关于#python#的问题,如何解决, 为什么不是[0,2,4,6]?

img

为什么不是[0,2,4,6]?完全没整明白。如果有相关的资料请发一下,不知道怎么搜资料,先谢过

以下这样才得到 [0,2,4,6]

funcs = []

for i in range(4):
    print(i)
    def closer_func(x):
        print(i)
        return x*i
    funcs.append(closer_func(2))

print(funcs)

因为执行到print()语句的时候,for循环已经执行结束了,i 定格在最后一个值,也就是3。
这个时候列表funcs里有四个一样的函数closer_func(),所以调用了4遍,打印了4个i。
然后传参2,每次和 i 相乘,得到[6,6,6,6]