无法从python中的函数增加全局变量

use*_*286 35 python

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

我有以下脚本:

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)

全局变量可以不声明的访问全球,但如果你要改变自己的价值观,需要全局声明.

  • 这不再有效。旧解决方案。 (4认同)

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是优选的.