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?
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.
Best solution: Don't use globals
>>> test1 = 0 >>> def test_func(x): return x + 1 >>> test1 = test_func(test1) >>> test1 1 2You have to specify that test1 is global:
test1 = 0 def testFunc(): global test1 test1 += 1 testFunc()