无法从python中的函数递增全局变量[重复]

swvgeqrz  于 2023-01-16  发布在  Python
关注(0)|答案(2)|浏览(148)
    • 此问题在此处已有答案**:

Using global variables in a function(25个答案)
16小时前关门了。
从这个代码:

COUNT = 0

def increment():
    COUNT = COUNT + 1

increment()

出现以下错误:

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

ibps3vxo

ibps3vxo1#

使用global语句,如下所示:

COUNT = 0

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

increment()

不使用global也可以访问全局变量,但要更改全局变量的值,需要使用该语句。

bzzcjhmw

bzzcjhmw2#

这是因为全局变量不会渗透到函数的作用域中,使用global语句强制赋值:

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

注意,使用全局变量是一个非常糟糕的主意-它使代码难以阅读和使用。相反,从你的函数返回一个值(使用return),并使用它来做一些事情。如果需要从一个函数范围访问相同的数据,考虑创建一个类。
另外值得注意的是,CAPITALS一般是为常量保留的,所以这样命名全局变量不是一个好主意,对于普通变量,lowercase_with_underscores是首选。

相关问题