首页 > 编程知识 正文

python全局变量和局部变量,python全局变量跨文件调用

时间:2023-05-05 18:21:28 阅读:201645 作者:1192

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 fdef 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 = 2def f(a): print(a)def main(): a += 1 f(a)if __name__ == '__main__': main()

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

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

  

# C.py# ---- coding=utf-8----#a = 2def f(a): print(a)def main(): global a a += 1 f(a)if __name__ == '__main__': main()

4.Python的全局变量实质

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。