循环内可调用变量的限制

mys*_*man 2 python while-loop python-3.x

一个非常简单的例子:

n=1
a=n
x=1
y=a+1
while (y-x) <10:
    n+=1
    print(x,y)
    print(n,a)
Run Code Online (Sandbox Code Playgroud)

这将进入一个无限循环:

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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,n循环正在更新并且可以调用,但是a没有更新到更新的n值.我想知道为什么会这样.如果y是这样的话也是如此n+1.

Jim*_*ard 5

int对象上的操作(+=此处)始终创建一个新的整数对象,它不会改变先前的值.因此,尽管有任务,但改变n不会反映出来.aa = n

你需要重新绑定an每次更改值时间n:

while (y-x) <10:
    n += 1
    a = n
Run Code Online (Sandbox Code Playgroud)