看了几篇博客,也查了这个问题很多次,每次都用同一种结果说服了自己,在此记录
传值 OR 传引用
传值是将对象拷贝一份,将新的对象传入函数,函数内外对象地址不同,改变不互相影响
传引用是将原有对象直接传入,函数内外对象共享同一地址,改变互相影响
传值 AND 传引用
当传入一个具有中转地址的对象(结构中含有指针)时,值传入将各子结构(指针)的值复制并传入。
此时对于指针,是值传入;对于指针所指向的对象,近似引用传入
python传对象引用
传入非可变变量时,值传入;传入可变变量时,引用传入
这件事按照C语言的思路很难理解,以变量为主体,变量名的指向一会是与实参相同的,一会是不同的。
但若以对象为主体,则对象可变就变,表现为传值;对象不可变就不变,表现为传引用。
python传值传引用只取决于对象是否为可变。