a=[1,2,[3,4],{‘a’:1}] # 原始对象
b=a # 赋值,传对象的引用
c=copy.copy(a) # 对象拷贝,浅拷贝
d=copy.deepcopy(a) # 对象拷贝,深拷贝
e=a[:] # 能复制序列,浅拷贝
对于赋值,浅拷贝,深拷贝我的理解为:
1.b和a之间赋值关系,对象的每个元素,指向完全相同,同步变化
a和b之中任意一个元素删减,都会引起相同的变化
2.c与a为浅拷贝关系,也就是说列表的最外一层为拷贝关系(非赋值关系),
仅仅是把外层元素拷贝过来而已,引用关系没有拷贝,所以在外层元素中,
当元素只有一层时,c与a变化没有关联,但此时从外到内第二层开始还是有引用关系,
在元素变化上面具有相关性,一起变化
3.d和a为深拷贝,d和a完全不具备引用关系,a的元素无论如何变化,甚至a被删除 (del a)
列表d不会受到任何影响
4.e属于复制序列,相当于浅拷贝,与c完全等同