Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中全局作用域的递增整数变量_Python_Function_Scope_Integer_Increment - Fatal编程技术网

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
是局部变量,而不是全局变量。您应该阅读有关作用域的内容。。。