考虑以下代码,我期望输出为2,因为要打印的x
是inner
函数范围内的局部变量。但是,它打印了2
。我不明白为什么会这样。任何解释和/或评论都表示赞赏。
def outer():
x = 1
def inner():
x = 1
x += 1
print x
return x
答案 0 :(得分:0)
此处有两个单独的x
变量:outer
函数有一个x
变量,inner
函数有自己的x
变量。
从函数某处的变量赋值开始,该变量具有局部范围。
因此,当您致电outer()
时,您将返回1
。 x
函数中的inner
是另一个函数,此外inner()
从不调用。因此,不会打印(本地)x
。
如果你这样写的话:
def outer():
x = 3
def inner():
x = 1
x += 1
print x
return x
然后调用outer()
将返回3
。即使你在inner()
函数中调用outer()
,它也会没有任何区别。由于x
函数中的inner()
不是outer()
函数中的inner
(print 2
中定义了本地范围)。虽然这意味着您return 3
,但您会var tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
schDate = tomorrow.toDateString();
。