一句话总结,浅拷贝只拷贝父对象,不拷贝子对像。
注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。下面通过代码来演示
import copy a=[[1,2],[3,4]] b=copy.copy(a) c=copy.deepcopy(a)
现在a b c都是等于[[1,2],[3,4]]
现在我们来改变a的父对象
a.append(5)
现在再来打印a b c的值,变成了
这是因为深拷贝与浅拷贝都会拷贝父对象,对于父对象来说,他们都是独立的,所以值不会变。
现在我们来改变a的子对象
a[0][0]=0
现在来打印a b c的值
浅拷贝只拷贝父对象,所以a的子对象改变时,浅拷贝的b的子对象也跟着变了,而深拷贝的c的子对象是独立的,所以没有变