为何全局变量total=100未在函数中生效,被视为0?
全局变量total=100未保留原值的原因分析
你的代码里出现这个问题(若实际运行结果为0,大概率是调用sum时传入了0,0参数),核心原因是**global关键字的作用**:
- 函数
sum中的global total声明,明确告诉Python:该函数内的total并非局部变量,而是直接引用全局作用域中定义的total变量。 - 你初始化的全局
total=100,但函数内执行total = num1+num2时,会直接覆盖全局变量的原值。调用sum(10,20)时全局total会被修改为30;若调用sum(0,0),全局total就会变成0。
两种常见需求的实现方案
- 保留全局total的原值:只需移除函数内的
global total声明,此时函数内的total是独立的局部变量,不会影响全局变量:
total=100 # 全局变量 def sum(num1,num2): total = num1+num2 # 局部变量,与全局total无关 print('函数内的局部total:', total) sum(10,20) print('函数外的全局total:', total) # 输出100
- 确实需要修改全局变量:当前代码逻辑是正确的,全局变量会被函数内的赋值操作覆盖,按需求传入参数即可。
内容的提问来源于stack exchange,提问作者Mohammed Meaad
相关产品推荐
相关产品推荐

