在Python中增加全局范围的整数变量

时间:2015-06-21 12:26:05

标签: python function scope integer increment

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

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

然后我在Python的交互式终端上执行语句序列如下。

>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2

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

1 个答案:

答案 0 :(得分:5)

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

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

您可以在功能中将x标记为全局:

def add_one():
    global x
    x += 1

在此x作为论据传递是没有意义的。