This question already has answers here:
Don't understand why UnboundLocalError occurs (closure) [duplicate]
(8 个回答)
6年前关闭。
我一直在使用“def”功能时遇到问题。我知道这个问题已经有人问过了,但答案并没有让我满意,我也没有看到如何将它应用到我的代码中。我正在尝试用 Python 制作流行的游戏 2048。基本上,当我定义使整个电路板向左移动的函数时,它会出现错误:UnboundLocalError:分配前引用的局部变量。似乎我必须在不是全局的某个地方定义变量“bone”和“btwo”。但我还没有弄清楚如何让它发挥作用。在我的 moveleft() 函数中设置参数不起作用,例如 moveleft(bone,btwo)。所以我在我的智慧的尽头。
现在,我将包含整个代码,所有代码都进行了注释,但我认为有问题的部分是我定义函数 moveleft() 的位置。另外,如果有任何突出的愚蠢代码,请告诉我。另外,尽量保持简单,我对编程及其相关的短语和术语非常垃圾。这只是我对代码的第三次尝试。
我意识到我问了很多,但我真的非常感谢这方面的帮助。
代码:
http://pastebin.ca/2824228
最小化版本:
而且,为什么不使用列表而不是定义 9 个变量?
(8 个回答)
6年前关闭。
我一直在使用“def”功能时遇到问题。我知道这个问题已经有人问过了,但答案并没有让我满意,我也没有看到如何将它应用到我的代码中。我正在尝试用 Python 制作流行的游戏 2048。基本上,当我定义使整个电路板向左移动的函数时,它会出现错误:UnboundLocalError:分配前引用的局部变量。似乎我必须在不是全局的某个地方定义变量“bone”和“btwo”。但我还没有弄清楚如何让它发挥作用。在我的 moveleft() 函数中设置参数不起作用,例如 moveleft(bone,btwo)。所以我在我的智慧的尽头。
现在,我将包含整个代码,所有代码都进行了注释,但我认为有问题的部分是我定义函数 moveleft() 的位置。另外,如果有任何突出的愚蠢代码,请告诉我。另外,尽量保持简单,我对编程及其相关的短语和术语非常垃圾。这只是我对代码的第三次尝试。
我意识到我问了很多,但我真的非常感谢这方面的帮助。
代码:
http://pastebin.ca/2824228
最小化版本:
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()
最佳答案
如果您在函数内写入全局变量,则需要明确说明您指的是全局变量。所以把它作为你函数的第一行:
global bone, btwo, bthree, bfour, bfive, bsix, bseven, beight, bnine
而且,为什么不使用列表而不是定义 9 个变量?
关于python - UnboundLocalError : local variable referenced before assignment Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24880139/