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

时间:2012-08-10 15:39:11

标签: python python-3.x

  

可能重复:
  local var referenced before assignment
  Python 3: UnboundLocalError: local variable referenced before assignment

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

我收到以下错误:

  

UnboundLocalError:赋值前引用的局部变量'test1'。

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

它是全局的还是本地的,如何在不将全局test1作为参数传递给testFunc的情况下解决此错误?

3 个答案:

答案 0 :(得分:165)

为了在函数内部修改test1,您需要将test1定义为全局变量,例如:

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

但是,如果您只需要阅读全局变量,则可以不使用关键字global进行打印,如下所示:

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

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

答案 1 :(得分:48)

最佳解决方案:请勿使用global s

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

>>> test1 = test_func(test1)
>>> test1
1

答案 2 :(得分:8)

您必须指定test1是全局的:

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