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)