美文网首页程序员
说说 Python 的 global 标识对变量作用域的影响

说说 Python 的 global 标识对变量作用域的影响

作者: deniro | 来源:发表于2019-08-11 17:08 被阅读14次

    global 标识用于在函数内部,修改全局变量的值。

    我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域:

    1. 变量定义在全局作用域,那就是全局变量。
    2. 变量在函数中定义,并且加了 global 标识,就是全局变量。
    3. 如果变量在函数中仅做了定义,那么就是局部变量。
    4. 如果变量在函数中仅仅是使用,那么就是全局变量。

    下面的示例,有助于理解上述规则:

    def cook():
        global dumplings
        dumplings = '10'  # 全局变量
        print('cook():' + dumplings)
    
    
    def cook2():
        dumplings = '22'  # 局部变量
        print('cook2():' + dumplings)
    
    
    def cook3():
        print('cook3():' + dumplings)  # 全局变量
    
    
    dumplings = 3  # 全局变量
    cook()
    print('global:' + dumplings)
    cook3()
    cook2()
    

    运行结果:

    cook():10
    global:10
    cook3():10
    cook2():22

    注意: 在函数中,如果在变量定义之前先使用它,就会抛错:

    def cook():
        print(dumplings)
        dumplings = 'local'
    
    
    dumplings = 'global'
    cook()
    

    运行结果:

    UnboundLocalError: local variable 'dumplings' referenced before assignment

    因为在函数中,存在对 dumplings 的定义赋值语句,所以被认为是局部变量。所以在定义之前,先访问这个局部变量就会抛错。

    相关文章

      网友评论

        本文标题:说说 Python 的 global 标识对变量作用域的影响

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