可能重复:
在创建它们的函数之外的函数中使用全局变量
我有以下脚本:
COUNT = 0
def increment():
COUNT = COUNT+1
increment()
print COUNT
Run Code Online (Sandbox Code Playgroud)
我只想增加全局变量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
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
cob*_*bie 61
它是一个全局变量,所以这样做:
COUNT = 0
def increment():
global COUNT
COUNT = COUNT+1
increment()
print COUNT
Run Code Online (Sandbox Code Playgroud)
全局变量可以不声明的访问全球,但如果你要改变自己的价值观,需要全局声明.
Gar*_*tty 24
这是因为全局变量不会渗透到函数的范围内.您必须使用该global语句强制执行此操作:
>>> COUNT = 0
>>> def increment():
... global COUNT
... COUNT += 1
...
>>> increment()
>>> print(COUNT)
1
Run Code Online (Sandbox Code Playgroud)
请注意,使用全局变量是一个非常糟糕的主意 - 它使代码难以阅读,并且难以使用.相反,从函数返回一个值并使用它来做某事.如果您需要从一系列函数中访问数据,请考虑创建一个类.
值得注意的是,CAPITALS通常为常量保留,所以将这些变量命名为这样是一个坏主意.对于正常变量,lowercase_with_underscores是优选的.