funcs = []
for i in range(10):
    funcs.append(lambda: print(i))
funcs[2]()

这段代码的运行结果是9。

个人猜想生成lambda函数的时候“i”变量的指针被传入其中,而i变量又随着for循环的迭代而变化,因此最后生成的函数实际上都是一样的(内存地址不同,运行结果相同)。

但实际上我也不能完全解释清楚整个过程(绝对不是懒得研究),有想法的可以在下方留言a。