wmy1212 发表于 2021-6-12 16:36:35

关于嵌套&局部变量的理解

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:44:31

本帖最后由 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]
查看完整版本: 关于嵌套&局部变量的理解