关于global()

来源:2-4 多线程并发问题

MasirYXM

2020-03-28 16:55:46

http://img.mukewang.com/climg/5e7f0f6c09112bc404270245.jpg

http://img.mukewang.com/climg/5e7f106609f1ab2004170469.jpg

global是为了让内部用外部的变量,还是让外部用内部的变量,还是这两种情况都需要声明global?图一老师这里的代码可不可以把def change_it(n):的global balance声明在外部?为什么图二我把global声明在外,再向类ChangeBalanceThread中加一个balance,而change_it(n)函数中的balance会报错,而类中的balance不会报错?另外就算不加global,类中的balance也是不报错的,这是为什么?

写回答

1回答

时间,

2020-03-30

同学,你好。

1、balance是全局变量可以在整个程序范围内访问,因此类中是可以直接访问的

2、定义在函数内部的变量拥有一个局部作用域,局部变量只能在其被声明的函数内部访问。若要在函数中修改全局变量,需要在函数内部声明其为global。global需要在函数内部声明,若在函数外声明,则函数依然无法操作。因此同学将global声明在外边,函数中使用balance会报错。

例:没加global之前,输出a的值为1和5,加了global之后,a的值都为1,因此实现了修改全局变量a的值

http://img.mukewang.com/climg/5e815faf091624cb03390359.jpg

http://img.mukewang.com/climg/5e815f900971192603430386.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~

0

0 学习 · 8160 问题

查看课程