Python 核心技术与实战
值传递和引用传递
值传递,通常就是拷贝参数的值,然后传递给函数的新变量。
引用传递,通常就是指把参数的引用传给新的变量。这样原变量和新变量就会指向同一块内存地址。
Python 中
变量的赋值,只是表示让变量指向了某个对象并不表示拷贝对象给变量;而一个对象可以被多个变量所指向。
可变对象(列表、字典和集合等等)的改变,会影响所有指向该对象的变量。
对于不可变对象(字符串、整型和元组等等)所有指向该对象的变量的值总是一样的也不会改变。但是通过某些操作(+=等等)更新不可变对象的值时,会返回一个新的对象。
Python 中的数据类型,例如整数(int)、字符串(string)等是不可变的。
Python 中的变量可以被删除,但是对象无法被删除。
如果对象是可变的,当其改变时,所有指向这个对象的变量都会改变。
如果对象不可变,简单的赋值只能改变其中一个变量的值。其余变量则不受影响。