理解python3中的全局标识符,关于,global

发表时间:2021-05-11

我有个需求是在两个类(在同一个.py模块中)之间,设定一个全局变量供这个两个类来访问。
我就打算使用 global 来实现。
但我对于 global 的用法不是很熟,在查找相关资料后实现了自己的需求,所以特此记录下自己对于 python3 global 的理解。
参阅了这篇大佬的文章


在一个代码块中,为参数加上一个标识符 global ,则代表这个参数是在这个代码块范围内中的一个 全局变量
并且这个变量在之前的赋值将会延续到这个代码块中。
举个例子:

a = 5
def fu():
    global a
    print("函数里没有对a赋值,只是把他申明为函数中的'全局变量'。a的值为:",a)
fu()

在这里插入图片描述


如果此时我对函数中的变量赋值,毫无疑问在函数中变量的值肯定会发生改变。
但是当语句跳出了该函数,在函数外这个值会维持在函数中发生的改变吗?

答案是会的。

验证如下:

a = 5
def fu():
    global a
    a = 6
    print("在函数中改变了a的值,在函数中a的值为:",a)
fu()
print("在函数外a的值为:",a)

在这里插入图片描述
说明在一个代码块中给变量加上了标识符 global ,确实会让这个变量成为一个全局变量,如果在这个代码块中对于这个变量进行更改,则这个改变会维持在整个.py模块中(而不仅仅只是在这个代码块中)。


并且 在这个代码块的范围中, (不是说在代码块的外部不可以提前申明这个变量)在申明这个参数为全局变量之前,不能对这个变量进行赋值。(否则就会报 name ‘b’ is assigned to before global declaration (此变量在global声明前已经被赋值的错))

如下:
在这里插入图片描述


自己项目中的需求详细描述:自己要对一个变量赋值,但是这个变量在另一个类中之后也会频繁调用。
那么在这个类里面就在使用这个变量前,先对这个变量进行 global 全局申明。
问题即解决。

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free