Python中全局作用域的递增整数变量
我试图在另一个函数范围内更改全局值Python中全局作用域的递增整数变量,python,function,scope,integer,increment,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?因为x是局部的(所有函数参数都是),而不是全局的,并且整数是不可变的 因此,x+=1与x=x+1相同,生成
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
作为参数传递。因为x
是局部变量,而不是全局变量。您应该阅读有关作用域的内容。。。