Can not increment global variable from function in python
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Using global variables in a function other than the one that created them
我有以下脚本:
1 2 3 4 5 6 7 8 | COUNT = 0 def increment(): COUNT = COUNT+1 increment() print COUNT |
我只想增加全局变量计数,但这会产生以下错误:
1 2 3 4 5 6 | 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 |
为什么会这样?
它是一个全局变量,因此请执行以下操作:
1 2 3 4 5 6 7 8 9 | COUNT = 0 def increment(): global COUNT COUNT = COUNT+1 increment() print COUNT |
可以在不声明全局变量的情况下访问全局变量,但如果要更改它们的值,则需要全局声明。
这是因为全局变量不会进入您的函数范围。您必须使用
1 2 3 4 5 6 7 8 | >>> COUNT = 0 >>> def increment(): ... global COUNT ... COUNT += 1 ... >>> increment() >>> print(COUNT) 1 |
请注意,使用全局变量是一个非常糟糕的主意——它使代码难以读取和使用。相反,从函数中返回一个值,并用它来做一些事情。如果需要从一系列函数中访问数据,请考虑创建一个类。
同样值得注意的是,