关于global()
来源:2-4 多线程并发问题
MasirYXM
2020-03-28 16:55:46
global是为了让内部用外部的变量,还是让外部用内部的变量,还是这两种情况都需要声明global?图一老师这里的代码可不可以把def change_it(n):的global balance声明在外部?为什么图二我把global声明在外,再向类ChangeBalanceThread中加一个balance,而change_it(n)函数中的balance会报错,而类中的balance不会报错?另外就算不加global,类中的balance也是不报错的,这是为什么?
1回答
同学,你好。
1、balance是全局变量可以在整个程序范围内访问,因此类中是可以直接访问的
2、定义在函数内部的变量拥有一个局部作用域,局部变量只能在其被声明的函数内部访问。若要在函数中修改全局变量,需要在函数内部声明其为global。global需要在函数内部声明,若在函数外声明,则函数依然无法操作。因此同学将global声明在外边,函数中使用balance会报错。
例:没加global之前,输出a的值为1和5,加了global之后,a的值都为1,因此实现了修改全局变量a的值
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~
相似问题