一个非常简单的例子:
n=1
a=n
x=1
y=a+1
while (y-x) <10:
n+=1
print(x,y)
print(n,a)
这将进入无限循环:
x= 1 y= 2
n= 2 a= 1
x= 1 y= 2
n= 3 a= 1
x= 1 y= 2
n= 4 a= 1
x= 1 y= 2
n= 5 a= 1
x= 1 y= 2
n= 6 a= 1
x= 1 y= 2
n= 7 a= 1
如您所见,n
正在通过循环进行更新,并且可以调用,但是 a
并未更新为更新后的 n
值(value)。我想知道这是为什么。如果 y
只是 n+1
,情况就是这样。
最佳答案
对 int
对象(此处为 +=
)的操作总是创建一个新的整数对象,它不会改变以前的值。因此,尽管有 a = n
赋值,但对 n
的更改不会反射(reflect)在 a
中。
每次更改 n
的值时,都需要将 a
重新绑定(bind)到 n
:
while (y-x) <10:
n += 1
a = n
关于python - 循环内可调用变量的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42673411/