为什么balance的值没有变化
import threading
import time
balance = 100
def add(n,name):
global balance
balance = balance + n
print('name: ' + name + ' is doing add, balance is ' + str(balance))
return balance
class threadTest(threading.Thread):
def __init__(self,number,name,*args,**kwargs):
super().__init__(name = name,*args,**kwargs)
self.number = number
def run(self):
for i in range(10):
name = threading.current_thread().name
n = add(self.number,name)
print('{} add {} ({}): balance:{}'.format(name,self.number,i,n))
if __name__ == '__main__':
t = threadTest(1, 't')
t.start()
这是代码,结果在图片里。运行完以后balance的值和左边打印出来的值完全不相符,而且手动调用函数也无法改变balance的值,但奇怪的是函数里面给出的result是正确的,那么这个值到底存在哪里?
正在回答 回答被采纳积分+1
同学,你好。老师明白同学所问的问题所在,是指打开了Show command line afterwards之后,在python的控制台里运行代码的,结果如图:
其实在右边显示的内容每次都是不固定的,因为程序运行后,再打开python交互模式,此时程序的变量因为程序的运行已经发生了改变,当交互模式完全打开后,读取到的变量是多少,就是多少,之后在交互模式下运行,结果和打开交互模式下加载的变量值保持一致,因此输入balance查找值时,值和右边显示的保持一致
关于为什么使用add后,balance的值已经发生改变,但再次调用balance的值还是没有变化,这是因为调用balance查看的内容是加载控制台时的balance变量,不是程序中的全局变量调用balance,如果想看到全局变量调用balance的值,可另外写一个方法查看,如:
祝学习愉快~
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星