You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何全局变量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。

两种常见需求的实现方案

  1. 保留全局total的原值:只需移除函数内的global total声明,此时函数内的total是独立的局部变量,不会影响全局变量:
total=100 # 全局变量

def sum(num1,num2):
    total = num1+num2 # 局部变量,与全局total无关
    print('函数内的局部total:', total)

sum(10,20)
print('函数外的全局total:', total) # 输出100
  1. 确实需要修改全局变量:当前代码逻辑是正确的,全局变量会被函数内的赋值操作覆盖,按需求传入参数即可。

内容的提问来源于stack exchange,提问作者Mohammed Meaad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:40:16