python中参数的传递与c/c++ java等不同,不是采用的值传递或者引用传递。python中所有的数据类型都是对象。参数传递采用的是赋值传递或者叫做对象的引用传递

python中的变量采用引用语义,每一个变量名其实存储的是实际存放数据的内存的地址。另外,在python中对变量名的访问(例如x=10),可以理解为通过只读的指针(地址)访问存放数据的内存空间,我们通过变量中存放的地址访问内存只能读,不能写,写的话将导致重新分配一块内存空间,存放新数据,并将变量中存放的原有的地址替换成新地址。

变量的赋值,只是让变量指向了这个对象,不代表拷贝对象给变量,一个对象可以被多个变量指向。

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

不可变对象(字符串、元组、整型等),指向该对象的变量的值都是一样的,也不会改变,当通过+=等操作更新不可变对象的值的时候,会新生成一个对象。

python变量可以删除,对象不能删除,对象在没有变量指向后,会在垃圾回收的时候收回内存。