python全局变量

1.全局变量

         在计算机中,一切数据都可以当作变量。理论上讲,变量可以分为几种类型:

         1)全局变量;

         2)静态变量;

         3)常量;

         4)栈变量;

         5)堆变量。

         这些变量的不同在于作用域和生命周期是不同的。对于其中的全局变量来说,必须要注意是,其作用域属于全部,生命周期存在于进程整个时期。

2.python的全局变量

       以前笔者写过一篇博客,是有关Golang语言的全局变量的(https://blog.csdn.net/wangzhezhilu001/article/details/91493594)。Golang中,全局变量属于包。在python中,全局变量的生命也属于模块(表现为单个python文件),而不是整个进程。

      可以通过如下程序验证。先提供一个文件A.py

          

# A.py

# ---- coding=utf-8--A--#


def f(a):
    print(a)

def main():
    global a

    a = 5
    f(a)

if __name__ == '__main__':
    main()

     再加上另一个调用程序B.py。

   

# B.py

# ---- coding=utf-8----#

from A import f


def main():
    global a
   
    f(a)

if __name__ == '__main__':
    main()

       运行B.py,发现程序报错。会提示程序变量a不存在。其原因在于,全局变量a并未定义,而B文件的全局变量a的作用域和生命空间只属于B文件。

3.Python的全局变量的用法

       python的全局变量的用法为:1)python的全局变量的作用域为特定模块之内;2)在函数内,如不加global关键字,则该变量为局部变量,如该变量未声明,如对变量进行修改,会出问题。

       测试程序如下所示:

      

# C.py

# ---- coding=utf-8----#

a = 2


def f(a):
    print(a)

def main():
   a += 1
   f(a)

if __name__ == '__main__':
    main()

     该方法会提示a为本地变量。

      要想使用,必须在函数内提供global关键字,才会让global变量起作用。

  

# C.py

# ---- coding=utf-8----#

a = 2


def f(a):
    print(a)

def main():
   global a

   a += 1
   f(a)

if __name__ == '__main__':
    main()

4.Python的全局变量实质

      python的全局变量的实质是:python在程序运行时,提供了一个__globals__字典,__globals__字典属于模块,并把全局变量放入字典里。这种方式,决定了python的全局变量不属于进程而属于模块。

你可能感兴趣的:(python,语言理解,python,全局变量)