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

Python已在顶部声明变量仍出现局部变量赋值前引用错误如何解决

错误原因说明

Python的变量作用域规则中:如果在函数内部尝试给某个变量赋值,Python会默认将该变量识别为当前函数的局部变量,忽略外层同名的全局变量。
你在on_mouse_down函数内执行score = score + 1时,Python判定score是该函数的局部变量,但赋值语句右侧引用的score还没有在函数内完成初始化,因此抛出UnboundLocalError错误。

修复方法

这里提供两种常用的可行方案:

方案1:使用global关键字声明全局变量

在修改全局变量的函数开头,用global关键字明确声明你要操作的是全局作用域的score变量,修改后的on_mouse_down函数代码如下:

def on_mouse_down(pos):
    global score  # 新增这行声明
    if apple.collidepoint(pos):
        score = score + 1
        print(score)
        place_apple()
    else :
        print("You missed!")

方案2:用可变容器存储分数

如果不想频繁使用global关键字,可以把分数放到列表、字典这类可变对象中存储,修改可变对象的内部值不需要声明global:

  1. 把全局的分数定义修改为:
score = [0]
  1. 修改on_mouse_down内的分数更新逻辑:
def on_mouse_down(pos):
    if apple.collidepoint(pos):
        score[0] = score[0] + 1
        print(score[0])
        place_apple()
    else :
        print("You missed!")

内容的提问来源于stack exchange,提问作者mark-in-motion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:39:00