全局变量出错

时间:2016-06-05 10:04:34

标签: python python-3.x pygame

每当我开始游戏并加载我的菜单时,我都会收到错误"语法警告:名称'完成'被分配到全球声明"之前。我该如何解决?我没有破坏我的游戏,但任何错误都应该修复。我已经删除了下面的代码,只显示基本代码。

<HeaderedContentControl Content="{Binding DateTimeVale, 
                                          Converter={StaticResource formattableConverter} 
                                          ConverterParameter={StaticResource myParameter}}">

</HeaderedContentControl>

1 个答案:

答案 0 :(得分:4)

这里的问题是您不止一次声明global变量。全局应在函数开始时声明。阅读更多here。要解决此问题,只需将global currentlevel, walls, players, finishes移动到函数顶部,如下所示:

def Menu():
    global currentlevel, walls, players, finishes
    runnin = True
    # more code...

概念

以下是一些测试,我希望这些测试可以帮助您了解SyntaxWarning的内容和内容。

1.不要在全局声明之前声明变量。

a = 3
global a

提升SyntaxWarning

2.即使你在函数之外声明它,你也可以在函数中声明变量global。

a = 3
def asdf():
    global a
    a = 2

不会提升SyntaxWarning

3.在函数中,您可以在全局声明之前声明任何其他变量(但是,不建议)。

a = 3
def asdf():
    b = 2
    global a
    a = 2

不会提升SyntaxWarning

4.在函数中,即使括在if else语句中,也只能在赋值之前声明全局变量。

a = 0

def asdf():
    if a == 3:
        global a
        a = 2
        return a
    else:
        global a
        return a

提升SyntaxWarning。如您所见,这与您正在做的事情更相似。

总结:

在给定范围内声明之前声明所有全局变量,即使可能无法访问global代码。