八、Python中复制,浅拷贝和深拷贝的区别

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