python 函数参数传递方式的理解

参考:https://www.cnblogs.com/loleina/p/5276918.html

假设函数定义:
def f(a);
函数调用:
f(c);
函数调用后如下,x为a,c指向的具体对象
a --> x
c --> x
无论函数内部如何,函数不会改变c的指向:c --> x

  1. 如果x为不可变对象, 函数内部通过变量a更新x时,a会指向新建的对象,该对象拥有更新后的值,会使得::
    a --> y 对象y拥有更新后的值
    c --> x
  2. 如果x为可变对象,函数内部通过变量a更新x时,变量a会更新原有的对象,a,c指向均不变:
    a --> x
    c --> x
  3. 当然无论对象是否可变,如果函数内部 a = y,都会使得a指向新的对象,而c的指向不变:
    a --> y
    c --> x

所以python函数参数是引用传递,具体会不会引起改变,由python对不可变对象,可变对象的更新的处理方式相关

原文地址:https://www.cnblogs.com/lif323/p/10290729.html