Python Lambda混淆

Python Lambda混淆,python,lambda,Python,Lambda,我刚刚学习了lambda函数。在这种情况下,我想像上面那样定义不同的lambda函数。但是,此脚本的结果是: def printName(name): print(name) if __name__ == "__main__": lambdaList = [] for i in range(4): lambdaList.append(lambda : printName(i)) lambdaList[0]() 我对这个结果有点困惑。为什

我刚刚学习了lambda函数。在这种情况下,我想像上面那样定义不同的lambda函数。但是,此脚本的结果是:

def printName(name):
    print(name)

if __name__ == "__main__":
    lambdaList = []
    for i in range(4):
        lambdaList.append(lambda : printName(i))
        lambdaList[0]()
我对这个结果有点困惑。为什么在我将新元素添加到此列表时第一个lambda函数发生了更改。
我希望有人能帮助我。

这是因为lambda中的I与for循环更新的I在内存中是相同的

上面的一个根本不是lambda函数。
0
1
2
3