在赋值之前引用的本地(?)variables

可能重复:
分配前引用的本地var
Python 3:UnboundLocalError:赋值之前引用的局部variables

test1 = 0 def testFunc(): test1 += 1 testFunc() 

我收到以下错误:

UnboundLocalError:分配之前引用的局部variables“test1”。

错误说'test1'是局部variables,但我认为这个variables是全局的

那么它是全球性的还是本地的,如何在不将全局test1作为parameter passing给testFunc情况下解决这个错误?

为了在函数内部修改test1 ,需要将test1定义为一个全局variables,例如:

 test1 = 0 def testFunc(): global test1 test1 += 1 testFunc() 

但是,如果只需要读取全局variables,则可以在不使用关键字global情况下进行打印,如下所示:

 test1 = 0 def testFunc(): print test1 testFunc() 

但是,无论何时您需要修改全局variables,您都必须使用关键字global

最好的解决scheme:不要使用global

 >>> test1 = 0 >>> def test_func(x): return x + 1 >>> test1 = test_func(test1) >>> test1 1 

你必须指定test1是全局的:

 test1 = 0 def testFunc(): global test1 test1 += 1 testFunc()