• 技术文章 >后端开发 >Python教程

    python如何在非创建全局变量的地方使用全局变量

    silencementsilencement2019-05-27 17:29:28原创1356

    在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local)、嵌套作用域(Enclosing function locals)、全局作用域(Global)、内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则。 即python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量。

    然而当在一个函数内部为一个变量赋值时,并不是按照上面所说LEGB规则来首先找到变量,之后为该变量赋值。在Python中,在函数中为一个变量赋值时,有下面这样一条规则:“当在函数中给一个变量名赋值是(而不是在一个表达式中对其进行引用),Python总是创建或改变本地作用域的变量名,除非它已经在那个函数中被声明为全局变量. ”

    python中golbal全局变量和nonlocal局部变量

    global关键字用来在函数或其他局部作用域中使用全局变量。

    gcount = 0   #定义了一个全局变量,(可以省略global关键字)
     
    def global_test():
        print (gcount)    #不修改,只是引用全局变量,不使用global关键字
        
    def global_counter():
        global gcount    
        gcount +=1       #修改全局变量,需要使用global关键字
        return gcount

    输出

    1

    2

    3

    nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

    def make_counter(): 
        count = 0     #定义一个局部变量,该局部变量作用范围在make_counter()方法内
        def counter(): 
            nonlocal count   #在方法counter()中使用外层局部变量 count 
            count += 1 
            return count 
        return counter 
           
    def make_counter_test(): 
      mc = make_counter() 
      print(mc())
      print(mc())
      print(mc())
     
    make_counter_test()

    输出

    3

    以上就是python如何在非创建全局变量的地方使用全局变量的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:python怎么做网站 下一篇:css caption-side属性怎么用
    Web大前端开发直播班

    相关文章推荐

    • python如何克隆一个 list• 利用Python反向输出一个字符串• python如何通过函数名的字符串来调用这个函数

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网