Python 全局变量扫盲

发布时间:2019-09-22 07:46:08编辑:auto阅读(1859)

    Python没有真正的全局变量,在Java和C++中,全局变量则是程序级别的,站在它们的角度,那么python就是没有全局变量,而在python的角度,是有全局变量,python提供global关键字,可以修改全局变量,在python中的全局变量只是针对当前python文件/模块所定义的,python文件就是一个模块,独立的命名空间,模块内定义的变量就只属于该命名空间,so,python没有真正的全局变量,全局变量也只是文件级别。

    所以Python的全局变量是相对而言的

    例子:
    test.py

    a = 1

    t1.py

    import sys
    import test # 导入test模块
    
    a = 1 # 声明一个变量
    
    def func1():
        global a # 引用当前命名空间的全局变量
        a += 1
    
    def func2():
        test.a += 1  # 引用test模块命名空间的变量
    
    def func3():
        # print(sys.modules) # 记录当前文件导入的所有模块
        module = sys.modules['test'] # 二次引用已导入的test模块
        module.a += 1       # 引用test模块命名空间的变量
    
    func1()
    func2()
    func3()
    
    print(a)        # 结果:2
    print(test.a)   # 结果:3

关键字