python - 函数变量值定义后发生变化

标签 python

如果我执行这段代码:

fs = []
for i in [1, 2, 3, 4]:
  def f():
    print(i)

  fs += [f]

for f in fs:
  f()

它打印:

4
4
4
4

我不明白为什么。以及如何让它打印这个:

1
2
3
4

最佳答案

跟进@AirSquid 的回答, 如果执行以下代码, 您将看到指示相同地址的 id(i)。

fs = []

for i in [1, 2, 3, 4]:
    def f():
        print(id(i))
        print(i)
    fs += [f]

for f in fs:
    f()
    print(f)

关于python - 函数变量值定义后发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73980868/

相关文章:

Python:如何将自定义类成员与内置类型进行比较

python - 更改检测 block 层 yacc 末端的方法

Python追加二维数组?

python - 在 QPlainTextEdit 中突出显示部分文本

python - 更新 Pandas 数据帧子集的子集的值对于大型数据集来说太慢了

python - 保持 User.email 在 Django Admin 中唯一

python - 如何将 openCV 转换图像转换为原始格式

python - env LC_ALL=C 和 python UnicodeEncodeError

python - 我很难理解 scipy.optimize 的语法

python - 从文本文件提取数据到 Pandas 时如何忽略垃圾数据?