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.

链接地址: http://www.djcxy.com/p/23882.html

上一篇: Pythons全局变量

下一篇: 不能从python中的函数增加全局变量