16.值传递、引用 or 其他。Python 里参数是如何传递的?

252 阅读1分钟

Python 核心技术与实战

值传递和引用传递

值传递,通常就是拷贝参数的值,然后传递给函数的新变量。

引用传递,通常就是指把参数的引用传给新的变量。这样原变量和新变量就会指向同一块内存地址。

Python 中

变量的赋值,只是表示让变量指向了某个对象并不表示拷贝对象给变量;而一个对象可以被多个变量所指向。

可变对象(列表、字典和集合等等)的改变,会影响所有指向该对象的变量。

对于不可变对象(字符串、整型和元组等等)所有指向该对象的变量的值总是一样的也不会改变。但是通过某些操作(+=等等)更新不可变对象的值时,会返回一个新的对象。

Python 中的数据类型,例如整数(int)、字符串(string)等是不可变的。

Python 中的变量可以被删除,但是对象无法被删除。

如果对象是可变的,当其改变时,所有指向这个对象的变量都会改变。

如果对象不可变,简单的赋值只能改变其中一个变量的值。其余变量则不受影响。