1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
import copy obj = [1, 2, 3, 4, ['a', 'b']] #原始对象 cite = obj #赋值,传对象的引用 shallow = copy.copy(obj) #对象拷贝,浅拷贝 deep = copy.deepcopy(obj) #对象拷贝,深拷贝 obj.append(5) #修改对象obj obj[4].append('c') #修改对象obj中的['a', 'b']数组对象
输出结果:
obj = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
cite = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
浅拷贝和深拷贝都不会受到添加对象的影响,因为父对象被新实例化,没有之前的引用
但浅拷贝内部的子对象仍然是引用,所以也被改变
shallow = [1, 2, 3, 4, ['a', 'b', 'c']]
deep = [1, 2, 3, 4, ['a', 'b']]