无法在Python函数中递增全局变量。

7 浏览
0 Comments

无法在Python函数中递增全局变量。

这个问题在这里已经有了答案

在函数中使用全局变量

从以下代码中:

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

我得到了以下错误:

Traceback (most recent call last):
  File "test.py", line 6, in 
    increment()
  File "test.py", line 4, in increment
    COUNT = COUNT+1
UnboundLocalError: local variable 'COUNT' referenced before assignment

为什么?如何从函数内部递增全局变量COUNT

admin 更改状态以发布 2023年5月22日
0
0 Comments

这是因为全局变量不会漏到函数作用域。使用global语句强制赋值:

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

请注意,使用全局变量是一种非常糟糕的想法 - 它使代码难以阅读和使用。相反,从函数中返回一个值(使用return),并使用它来实现某些功能。如果需要从一系列函数中访问同样的数据,请考虑制作一个类。

值得注意的是,CAPITALS通常保留用于常量,因此用此命名全局变量是不好的想法。对于普通变量,lowercase_with_underscores是首选。

0
0 Comments

使用global语句,像这样:

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

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

0