The most common reason for this error is that you’re using multiple global declarations in the same function. Consider this example:
x = 0 def func(a, b, c): if a == b: global x x = 10 elif b == c: global x x = 20
If you run this in a recent version of Python, the compiler will issue a SyntaxWarning pointing to the beginning of the func function.
Here’s the right way to write this:
x = 0 def func(a, b, c): global x # <- here if a == b: x = 10 elif b == c: x = 20
参考:http://effbot.org/zone/syntaxwarning-name-assigned-to-before-global-declaration.htm