关于函数:在python中增加全局范围的整数变量

Incrementing integer variable of global scope in Python

本问题已经有最佳答案,请猛点这里访问。

我正在尝试在另一个函数范围内更改全局值x,如下代码所示:

1
2
3
x = 1
def add_one(x):
    x += 1

然后我在python的交互终端上执行语句序列,如下所示。

1
2
3
4
5
6
7
8
>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2

为什么x仍然是2而不是3?


因为x是局部的(所有函数参数都是),而不是全局的,整数是不可变的。

因此,x += 1x = x + 1相同,产生一个新的整数对象,x反弹到这个整数对象。

您可以在函数中将x标记为全局:

1
2
3
def add_one():
    global x
    x += 1

这里没有必要把x作为一个论点来传递。