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

2024-03-28 10:01:01 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的代码,我期望输出为2,因为要打印的^ {CD1>}是^ {CD2>}函数的范围内的局部变量。但是,它改为打印2。我不明白为什么会这样。如有任何解释和/或评论,我们将不胜感激

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

Tags: 函数代码returndef评论innerprintouter
1条回答
网友
1楼 · 发布于 2024-03-28 10:01:01

这里有两个独立的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()函数中的xouter()函数中的x之外的另一个函数(在inner中定义了一个局部作用域)。虽然这意味着你print 2,但你将return 3

相关问题 更多 >