支离疏哈哈哈 发表于 2020-5-2 11:54:48

关于内嵌函数变量作用域的问题

A
def outside():
    var=5
    def inside():
      
      print(var)
      

    inside()
outside()

B
def outside():
    var=5
    def inside():
      
      print(var)
      var=3
      

    inside()
outside()

A没有报错,B报错,小甲鱼给的理由是变量var没有被定义就拿来使用,外层函数有个同名变量,python保护变量作用域,所以外层的var无法被访问,所以报错,但是如果var没被定义,那A的print(var)的var不是也没被定义吗,为什么还能打印

永恒的蓝色梦想 发表于 2020-5-2 11:58:49

变量var没有被定义就拿来使用,外层函数有个同名变量,python保护变量作用域,所以外层的var无法被访问可以访问,但赋值是不允许的,如果要赋值需要加上nonlocal var

永恒的蓝色梦想 发表于 2020-5-2 12:02:43

满意请选最佳哦~{:10_297:}

支离疏哈哈哈 发表于 2020-5-2 12:04:27

本帖最后由 支离疏哈哈哈 于 2020-5-2 12:07 编辑

永恒的蓝色梦想 发表于 2020-5-2 11:58
可以访问,但赋值是不允许的,如果要赋值需要加上

那为啥小甲鱼说不能访问?他说错了吗

永恒的蓝色梦想 发表于 2020-5-2 12:09:19

支离疏哈哈哈 发表于 2020-5-2 12:04
那为啥小甲鱼说不能访问?他说错了吗

如果确实是这么说的,那么他就错了
页: [1]
查看完整版本: 关于内嵌函数变量作用域的问题