直接复制:直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
浅拷贝:copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
深拷贝:深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
为什么python默认的是浅拷贝?
时间角度:浅拷贝花费时间更少
空间角度:浅拷贝花费内存更少
效率角度:浅拷贝只拷贝顶层数据,一般情况下比深拷贝效率更好。
python中构造的任何数据都是对象,对象都有三个属性:type、id、value;
python按照更新对象的方式,分为可变对象与不可变对象。
可变对象:列表、字典、集合
不可变对象:数字、字符串、元祖。不可变对象指的是id和value都不可变。
引用:对象的别名。在python中,每个对象都会开辟一块空间来存储该对象。在使用该对象时候,只要知道该对象的地址,就可以对该对象进行操作。因为地址的数字地址不方便记忆,就使用变量名的形式来代替对象的数字地址。在python中,变量就是地址的一种表示形式,并不开辟存储空间。