八、Python中复制,浅拷贝和深拷贝的区别
1、Python中,对象赋值实际上是对象的引用,默认浅拷贝
当创建一个对象然后把它赋给另一个变量时,Python并没有拷贝这个对象,而是拷贝了这个对象的引用
2、一般有三种方法,例,alist = [1, 2, 3, ['a', 'b']]
(1)直接赋值,默认浅拷贝传递对象的引用,原始列表或拷贝对象改变,被赋值的b也会做相同的改变
(2)浅拷贝,使用copy模块的copy()方法,没有拷贝子对象,原始数据和拷贝对象共用子对象。所以如果子对象为可变的,那么可变子对象改变,会影响原始数据和拷贝对象。
(3)深拷贝,使用copy模块的deepcopy()方法,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变。例子中d是完全独立的对象。
- 深拷贝中对象循环引用