美文网首页
python学习笔记|nonlocal/global

python学习笔记|nonlocal/global

作者: KeyLiu7 | 来源:发表于2020-09-10 09:43 被阅读0次

    python中引用变量的顺序为:当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量,当试图去修改,不同作用域中的变量的值时,python会自动创建一个在那个作用域里面的同名变量,变量的作用范围仅限于此作用域。

    但是仅仅是引用变量确是可以引用的。

    nonlocal作用为变当前作用域局部变量为最临近外层(非全局)作用域变量

    global的作用为变当前作用域局部变量为当前模块中的全局变量

    举个例子

    def test():
      i = 0
      def test2():
          i += 2
      test2()
      print(i)
    test()
    

    会报错local variable 'i' referenced before assignment,需要使用nonlocal改变i作用域

    def test():
      i = 0
      def test2():
          nonlocal i
          i += 2
      test2()
      print(i)
    test()
    

    再如

    i= 0
    def test():
        def test2():
             i+= 2
        test2()
    test()
    

    会报错local variable 'i' referenced before assignment,使用global改变i作用域

    i= 0
    def test():
        def test2():
             global i
             i+= 2
        test2()
    test()
    

    值得注意的是,此时i值仍未0,因为test2中i的作用域仅限于函数中

    相关文章

      网友评论

          本文标题:python学习笔记|nonlocal/global

          本文链接:https://www.haomeiwen.com/subject/lqvuektx.html