python - 怎么返回结果是这样的,这段代码中的lambda函数是做什么的?

标签 python python-2.7

flist = []

for i in range(3):

    flist.append(lambda: i)

for f in flist:
    print f()

我不知道为什么它返回2,2,2

最佳答案

在第一个循环的最后一次迭代中,您的 i 值为 2,因此列表中每个元素中的所有 i 值现在均为 2。这是因为您已经创建了对 i 变量的实时引用。

这是一个简化的演示:

a = 5
c = lambda: a
a += 5
>>> c()
10

关于python - 怎么返回结果是这样的,这段代码中的lambda函数是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24446510/

相关文章:

python - 需要FilteredSelectMultiple小部件的指导

python - 使用 ArtistAnimation 在 matplotlib 中动画化 png

python - Keras InvalidArgumentError 与 Model.Fit()

mysql - 为 mysql 数据库中存在的特定列生成 n-gram

python-2.7 - ValueError : Tensor:(. ..) 不是该图的元素

python - 这个 tzinfo 变量有什么问题?

python - Python 中的悬挂缩进与垂直对齐

python - python中的多进程是否至少需要0.3s?

python - __init__ 的正确类型注释

python - 根据符号递增数字