如果我执行这段代码:
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/