Can not increment global variable from function in python
PythonPython Problem Overview
> Possible Duplicate:
> Using global variables in a function other than the one that created them
I have the following script:
COUNT = 0
def increment():
COUNT = COUNT+1
increment()
print COUNT
I just want to increment global variable COUNT, but this gives me the following error:
Traceback (most recent call last):
File "test.py", line 6, in <module>
increment()
File "test.py", line 4, in increment
COUNT = COUNT+1
UnboundLocalError: local variable 'COUNT' referenced before assignment
Why is it so?
Python Solutions
Solution 1 - Python
its a global variable so do this :
COUNT = 0
def increment():
global COUNT
COUNT = COUNT+1
increment()
print COUNT
Global variables can be accessed without declaring the global but if you are going to change their values the global declaration is required.
Solution 2 - Python
This is because globals don't bleed into the scope of your function. You have to use the global
statement to force this for assignment:
>>> COUNT = 0
>>> def increment():
... global COUNT
... COUNT += 1
...
>>> increment()
>>> print(COUNT)
1
Note that using globals is a really bad idea - it makes code hard to read, and hard to use. Instead, return a value from your function and use that to do something. If you need to have data accessible from a range of functions, consider making a class.
It's also worth noting that CAPITALS
is generaly reserved for constants, so it's a bad idea to name your variables like this. For normal variables, lowercase_with_underscores
is preferred.