1、复制与拷贝
赋值是对对象的引用,而深浅拷贝是创建一个新的对象
将a赋值给b,a,b的地址完全一致,说明a,b仍然是同一个对象,只是起了个别名而已
而copy_a,deepcopy_a与a的地址都不一致,说明copy_a,deepcopy_a是重新开辟了地址空间存放新的对象。
所以,对b的操作等同于对a的操作,而无论是深度拷贝还是浅度拷贝,对新对象的操作不会影响到原对象(对象不存在子对象)
2、深度拷贝与浅度拷贝
当对象存在子对象时,浅度拷贝只会拷贝父对象,而对于子对象,则只会拷贝id;
而深度拷贝则会递归查找子对象的内容,并重新开辟空间存储一份,然后赋值给新的对象
浅度拷贝时,对新对象copy_a的第一层的添加值4时,原对象a没有受影响;而对子对象添加值44时,a也同时添加了值44。
深度拷贝时,对新对象deepcopy_a的第一层添加值5和对子对象添加值55,都没有影响原对象a。
所以,浅度拷贝只拷贝了父对象以及子对象的ID,子对象拷贝实际是引用;而深度拷贝会将父对象和子对象完全拷贝,新对象与原对象完全独立