Local (?) variable referenced before assignment

foxneSs picture foxneSs · Aug 10, 2012 · Viewed 361.7k times · Source
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?

Answer

Florin Stingaciu picture Florin Stingaciu · Aug 10, 2012

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.