关于嵌套&局部变量的理解
def outside():var = 5
def inside():
var = 3
print(var)
inside()
outside()
这个跑出来是3
我想的是:执行outside(),首先var=5,然后执行inside(),但是var=3这句,相当于【想要修改非全局变量的外部变量,但是不能修改,所以自动创建一个同名变量】,而3则是这个同名变量被赋的值,print打印的也是这个同名变量【也就是inside()内的局部变量】。
这样理解对吗? 本帖最后由 Twilight6 于 2021-6-12 16:45 编辑
应该可以这么说:
因为 inside 是 outside 的内嵌函数,所以 var = 5 相对于 内嵌函数 inside 来说属于全局变量
而 inside 中的 var = 3 就相对于 outside 来说是局部变量,同样,触发屏蔽机制的条件是一样的
所以此时 var = 3 时,因为外部有 var = 5 这个同名全局变量(相对于 var = 3 而言)
此时触发屏蔽机制,临时创建同名变量 var ,暂时屏蔽外部变量 var = 5
页:
[1]