我正在尝试从另一个函数范围内更改全局值x
,如以下代码所示,
x = 1
def add_one(x):
x += 1
然后我在 Python 的交互式终端上执行语句序列,如下所示。
>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2
为什么x
仍然是 2 而不是 3?
因为x
是局部的(所有函数参数都是),而不是全局的,并且整数是不可变的。
所以x += 1
与x = x + 1
相同,产生一个新的整数对象,x
被反弹到那个对象。
您可以在函数中x
全局标记:
def add_one():
global x
x += 1
在这里传递x
作为论据是没有意义的。