python系列教程184——尽量少用全局变量

Posted 人工智能AI技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列教程184——尽量少用全局变量相关的知识,希望对你有一定的参考价值。

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

在默认情况下,函数内部赋值的变量名是本地变量,所以如果希望在函数外部对变量进行改变,就必须添加额外的代码——global语句。但是将其改为全局变量会引发一些软件工程问题:由于变量的值取决于函数调用的顺序,而函数自身是任意顺序进行排列的,导致了程序调试起来变得很困难。

作为例子,思考一下这个模块文件。

X = 99

def func1():

    global X

    X = 88

def func2():

    global X

    X = 77

这里X的值将会是什么?确切地说,如果不确定引用的时间,这个问题就是毫无意义的。X的值与时间相关联,因为它的值取决于哪个函数是最后进行调用的。

所以为了理解这个代码,你必须去跟踪整个程序的控制流程。此外,如果重用或修改了代码,你必须随时记住整个程序。这就是使用全局变量的问题:不像那些依赖于本地变量的函数构成的代码,全局变量使得程序更难理解和使用。

另一方面,不使用面向对象的编程方法以及类的话,全局变量也许就是Python中最直接保持状态信息的方法(函数在其下次被调用时需要记住的信息):本地变量在函数返回时将会消失,而全局变量不是这样。

此外,在Python中使用多线程进行并行计算程序实际上是要依靠全局变量的。因为全局变量在并行线程中在不同的函数之间成为了共享内存,所以扮演了通信工具的角色。

全局变量有好处也有坏处,总之最好尽可能地避免使用全局变量(试试通过传递函数然后返回值来替代一下)。

以上是关于python系列教程184——尽量少用全局变量的主要内容,如果未能解决你的问题,请参考以下文章

python(10)——局部变量全局变量

python系列教程186——访问全局变量

局部变量与全局变量

Python入门系列教程函数

Python基础笔记系列九:变量自定义函数以及局部变量和全局变量

全局变量的优缺点及为什么要少用全局变量