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

Pip*_*p S 3 python integer scope function increment

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

x = 1
def add_one(x):
    x += 1
Run Code Online (Sandbox Code Playgroud)

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

>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 5

因为x本地的(所有函数参数都是),不是全局的,并且整数不可变.

所以x += 1就像x = x + 1生成一个新的整数对象一样,并且x反弹到那个.

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

def add_one():
    global x
    x += 1
Run Code Online (Sandbox Code Playgroud)

x这里作为一个论点是没有意义的.