UnboundLocalError:局部变量在赋值前被引用 Python
我最近在使用“def”这个函数时遇到了一些麻烦。我知道这个问题已经有人问过了,但我觉得那个答案并没有解决我的疑问,而且我也不知道怎么把它应用到我的代码里。我正在用Python制作一个流行的游戏2048。简单来说,当我定义一个让整个棋盘向左移动的函数时,出现了一个错误:UnboundLocalError: local variable referenced before assignment。看起来我需要在某个地方定义“bone”和“btwo”这两个变量,而不是在全局范围内。但我还没弄明白怎么才能做到这一点。在我的moveleft()函数中设置参数也不管用,比如moveleft(bone, btwo)。所以我现在真的很困惑。
现在,我会把整个代码都贴出来,里面都有注释,但我觉得问题出在我定义moveleft()函数的地方。如果代码中还有其他不太好的地方,请告诉我。另外,尽量简单点,我对编程和相关术语真的不太在行。这是我写的第三个代码。
我知道我要求的有点多,但我真的非常非常希望能得到帮助。
简化版本:
bone, btwo = 1, 2
def move_left():
if bone == 1: print("bone is 1")
if btwo == 2: print("btwo is 2")
btwo = 3
bone = 2
move_left()
1 个回答
3
如果你在一个函数里要修改全局变量,那么你需要明确告诉程序你要用的是全局变量。所以在你的函数的第一行加上这一句:
global bone, btwo, bthree, bfour, bfive, bsix, bseven, beight, bnine
另外,为什么不使用一个列表来代替定义9个变量呢?