Can not increment global variable from function in python
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?
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.
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.
上一篇: Pythons全局变量
下一篇: 不能从python中的函数增加全局变量