不能从python中的函数增加全局变量

可能重复:
在创建它们的函数中使用全局变量

我有以下脚本:

COUNT = 0

def increment():
    COUNT = COUNT+1

increment()

print COUNT

我只想增加全局变量COUNT,但是这给了我以下错误:

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

为什么这样?


它是一个全局变量,所以这样做:

COUNT = 0

def increment():
    global COUNT
    COUNT = COUNT+1

increment()

print COUNT

可以在不声明全局变量的情况下访问全局变量,但如果要更改它们的值,则需要全局声明。


这是因为全局变量不会渗入函数的范围。 你必须使用global声明来强制这个分配:

>>> COUNT = 0
>>> def increment():
...     global COUNT
...     COUNT += 1
... 
>>> increment()
>>> print(COUNT)
1

请注意,使用全局变量是一个非常糟糕的主意 - 它使代码难以阅读,并且很难使用。 相反,从你的函数返回一个值并使用它来做一些事情。 如果您需要从各种功能访问数据,请考虑创建一个班级。

还值得注意的是, CAPITALS通常是为常量保留的,因此将这样的变量命名是个坏主意。 对于正常变量,首选使用lowercase_with_underscores

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

上一篇: Can not increment global variable from function in python

下一篇: How to make a local variable (inside a function) global