这个 x 在内部函数的局部范围内吗?



考虑以下代码,我预计输出为 2,因为要打印的x是函数范围内的局部变量inner。但是,它打印了2。我不明白为什么会这样。任何解释和/或评论不胜感激。

def outer():
x = 1
def inner():
x = 1
x += 1
print x
return x

这里有两个单独的x变量:outer函数有一个x变量,inner函数有自己的x变量。

从函数中某处的变量赋值的那一刻起,该变量就具有局部范围。

所以当你打电话给outer()时,你会返回1inner函数中的x是不同的,此外,从不调用inner()。因此,不会打印(本地)x

如果你这样写:

def outer():
x = 3
def inner():
x = 1
x += 1
print x
return x

然后调用outer()将返回3。即使您在outer()函数中调用inner(),也不会有任何区别。由于inner()函数中的x是另一个,而不是outer()函数中的(inner中定义了局部作用域)。虽然这意味着你print 2,但你会return 3

最新更新