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