- 浅拷贝拷贝的是原对象的引用。不论子元素改变与否,子元素相同。子元素改变,浅拷贝后的子元素也跟着改变。
浅拷贝后,改变原始对象中可变类型的值时,会影响到拷贝对象。
改变原始对象中不可变类型的值时,不影响拷贝对象。
- 深拷贝后,除了顶层拷贝,对子元素也进行了拷贝(如果子元素是可变类型,即使改变原拷贝对象,值也不会变)。元素地址也不同了。
>>> list1 = [[1,2],'99','le']
>>> import copy
>>> list2 = copy.copy(list1)
>>> print(list1)
[[1, 2], '99', 'le']
>>> print(id(list1))
1964459353032
>>> print(id(list2))
1964459352968
#可变类型
>>> print(id(list1[0]))
1964459342792
>>> print(id(list2[0]))
1964459342792
>>> list1[0][0] = 3
>>> list1
[[3, 2], '99', 'le']
>>> print(list2)
[[3, 2], '99', 'le']
#不可变类型
>>> print(id(list2[1]))
1964459356264
>>> print(id(list1[1]))
1964459356264
#另外
>>> a = 'abc'
>>> print(id(a))
1964456622992
>>> b = 'abc'
>>> print(id(b))
1964456622992