不能从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
。
上一篇: Can not increment global variable from function in python
下一篇: How to make a local variable (inside a function) global