2024-03-28 10:01:01 发布
网友
考虑下面的代码,我期望输出为2,因为要打印的^ {CD1>}是^ {CD2>}函数的范围内的局部变量。但是,它改为打印2。我不明白为什么会这样。如有任何解释和/或评论,我们将不胜感激
2
def outer(): x = 1 def inner(): x = 1 x += 1 print x return x
这里有两个独立的x变量:outer函数有一个x变量,inner函数有自己的x变量
x
outer
inner
从函数中某个地方的变量赋值开始,该变量就具有局部作用域
因此,当您调用outer()时,您将返回1。inner函数中的x是另一个函数,而且inner()从未被调用过。因此,不会打印(本地)x
outer()
1
inner()
如果你这样写的话:
def outer(): x = 3 def inner(): x = 1 x += 1 print x return x
然后调用outer()将返回3。即使您在outer()函数中调用了inner(),它也不会产生任何影响。因为inner()函数中的x是outer()函数中的x之外的另一个函数(在inner中定义了一个局部作用域)。虽然这意味着你print 2,但你将return 3
3
print 2
return 3
这里有两个独立的
x
变量:outer
函数有一个x
变量,inner
函数有自己的x
变量从函数中某个地方的变量赋值开始,该变量就具有局部作用域
因此,当您调用
outer()
时,您将返回1
。inner
函数中的x
是另一个函数,而且inner()
从未被调用过。因此,不会打印(本地)x
如果你这样写的话:
然后调用
outer()
将返回3
。即使您在outer()
函数中调用了inner()
,它也不会产生任何影响。因为inner()
函数中的x
是outer()
函数中的x
之外的另一个函数(在inner
中定义了一个局部作用域)。虽然这意味着你print 2
,但你将return 3
相关问题 更多 >
编程相关推荐