python3关于标识符global的理解

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


在一个代码块中,为参数加上一个标识符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全局申明。
问题即解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值