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

为何全局变量num输出0而非6?如何修改实现预期效果?

问题原因

你函数里的num = num1其实是创建了一个局部变量,和全局的num根本不是同一个东西。Python默认规则是:函数内部给变量赋值时,这个变量会被当成局部变量处理,除非你明确告诉它要使用全局的那个变量。所以最后一次调用average时,函数里的num只是临时存在的局部变量,函数执行完就销毁了,全局的num还是初始的0。

修改方法

有两种靠谱的修改方式:

  • 方式一:在函数里声明num是全局变量
    直接在函数开头加global num,这样函数里对num的赋值就会作用到全局变量上:
    num = 0
    def average(num1, num2, num3):
        global num
        num = num1
        return (num1 + num2 + num3) / 3
    print(average(7, 5, 9))
    print(average(6, 6, 7))
    print(num)  # 现在输出6
    
  • 方式二:让函数返回num1,再手动赋值给全局num
    这种方式更符合函数的封装原则,不直接操作全局变量:
    num = 0
    def average(num1, num2, num3):
        # 返回平均值和当前的num1
        return (num1 + num2 + num3) / 3, num1
    # 调用时同时接收返回的平均值和num1,更新全局num
    avg1, num = average(7, 5, 9)
    avg2, num = average(6, 6, 7)
    print(avg1)
    print(avg2)
    print(num)  # 输出6
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:34:53