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

为何subtract函数无法修改begin变量,导致add函数无法输出1?

问题分析与解决

你的代码执行时会直接报错,根本走不到add()那一步。原因是Python的变量作用域规则:在函数内部给变量赋值时,解释器会默认把这个变量当成局部变量,但subtract()里的begin += 1是先读取再赋值,这时候局部的begin还没定义,就会抛出UnboundLocalError。

要修改全局变量begin,必须在函数内部用global关键字明确声明这个变量是全局的,修正后的代码如下:

begin = 0
def add():
    print(begin)

def subtract():
    global begin
    begin += 1

subtract()
add()

现在执行这段代码,subtract()会正确修改全局的begin值为1,add()就能输出1了。

另外补充一点:如果只是在函数内部读取全局变量(比如add()里的操作),不需要声明global,但只要涉及赋值操作,就必须用global明确告知解释器要操作的是全局变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:24:53