【发布时间】:2015-07-02 14:13:28
【问题描述】:
这个问题是从涉及 Tkinter 按钮回调函数的原始应用程序中提炼出来的。这是说明行为的一行。
lambdas = [lambda: i for i in range(3)]
如果您尝试调用生成的 lambda 函数:
lambdas[0]()、lambdas[1]() 和 lambdas[2]() 都返回 2。
期望的行为是让lambdas[0]() 返回 0、lambdas[1]() 返回 1、lambdas[2])() 返回 2。
我看到索引变量是通过引用解释的。问题是如何改写以按价值处理。
【问题讨论】:
-
[lambda i = i: i for i in range(3)] -
规范副本:stackoverflow.com/q/12423614/3001761。 “索引变量是通过引用解释的” - 不,这是一个后期绑定的东西。
标签: python python-2.7 lambda list-comprehension