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