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

如何在Python 3的函数内部更新全局变量?

当然可以在函数内部更新全局变量,你的代码问题出在语法细节上

你完全可以在函数里修改全局变量!你的代码没生效,核心问题是**global关键字的用法写错了**——你把global声明和变量初始化堆在了同一行,而且还放在了函数外面,这根本没起到告诉函数“我要操作全局变量”的作用。

先拆解下你的原代码问题:

global current_minimum current_minimum = 0
def update():
    current_minimum = -0.1
_ = update()
print(current_minimum) # 输出0

这里的global写在函数外毫无意义,而且就算写在函数里,也不能和赋值语句放同一行。Python会把这种写法当成“声明全局变量current_minimum,然后创建一个局部变量current_minimum并赋值0”,完全不是你想要的效果。

正确的实现方式

要修改全局变量,必须在函数内部用单独的一行声明global [变量名],明确告诉Python:“接下来要操作的这个变量是全局作用域里的那个”,然后再进行赋值。

修正后的代码:

# 先在全局作用域初始化变量
current_minimum = 0

def update():
    # 单独一行声明要使用的全局变量
    global current_minimum
    # 现在赋值的就是全局变量了
    current_minimum = -0.1

update()
print(current_minimum) # 现在会输出-0.1

额外小贴士

  • 如果只是读取全局变量的值,不需要global声明;但只要是要修改它,就必须加这个声明,否则Python会默认创建一个同名的局部变量,和全局变量完全无关;
  • 既然你确定不会并行执行优化步骤,那这种全局变量的用法是安全的,不用担心多线程下的竞态问题,可以放心用它来记录当前最小值并保存数据。

内容的提问来源于stack exchange,提问作者O.rka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:27