Python 为什么这两个函数不以相同的形式返回

Python 为什么这两个函数不以相同的形式返回,python,Python,比如说, def T(x): for i in range(1,len(x)-1): x[i]+=x[i-1]+2 def f(x): x=x+2 return x x=[1,2,3,4,5] ;T(x) ;print(x) [1, 5, 10, 16, 5] 变量x在这种情况下会发生变化,但是 x=3 ;f(x) ;print(x) x=3 在这种情况下,x不变 为什么会发生这种情况?一般来说,可变对象作为引用传递,而不可变对象通过值传递 要获得与(1)

比如说,

def T(x):
for i in range(1,len(x)-1):
        x[i]+=x[i-1]+2

def f(x):
    x=x+2
    return x

x=[1,2,3,4,5]
;T(x)
;print(x)
[1, 5, 10, 16, 5]
变量x在这种情况下会发生变化,但是

x=3
;f(x)
;print(x)
x=3
在这种情况下,x不变


为什么会发生这种情况?

一般来说,可变对象作为引用传递,而不可变对象通过值传递

要获得与(1)相同的结果:


您可以查看此项了解更多信息。

列表是可变的,整数是不可变的。
x = 3
x = f(x)
print(x)