【发布时间】:2021-12-12 04:39:31
【问题描述】:
li = []
for i in range(5):
li.append(lambda: i)
for item in li:
print(item())
此代码导致函数始终返回 4。为什么会发生这种情况,无论如何要防止这种情况发生,同时保持代码的相同想法。
【问题讨论】:
-
这能回答你的问题吗? Python, loops and closures
-
@NickParsons 尽管您所指的问题已部分回答了该问题,但
is there anyway to prevent this并未完全回答。 -
@Tarik 我认为最后一段说 “如果您希望每个函数的打印值 i 固定为定义函数时的值,最简单的方法是使用默认参数” 举例说明如何防止?
-
很公平。我在那里添加了一个替代实现。将投票结束这个问题。
-
i 设置的最后一个值是 4。因此,当调用该函数时,它不会返回最初输入的数字,而只是 4。