Local (?) variable referenced before assignment [duplicate]

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

I am receiving the following error:

UnboundLocalError: local variable 'test1' referenced before assignment.

Error says that 'test1' is local variable but i thought that this variable is global

So is it global or local and how to solve this error without passing global test1 as argument to testFunc?

2

3 Answers

In order for you to modify test1 while inside a function you will need to do define test1 as a global variable, for example:

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

However, if you only need to read the global variable you can print it without using the keyword global, like so:

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

But whenever you need to modify a global variable you must use the keyword global.

1

Best solution: Don't use globals

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

You have to specify that test1 is global:

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

You Might Also Like