python copy模块
深拷贝和浅拷贝、赋值的区别
代码如下:
import copy
A = [1, 2, 3, [22, 23, 24]]
B = A # 赋值
C = A.copy() # 浅拷贝
D = copy.deepcopy(A) # 深拷贝
A.append(12)
A[3].append(33)
print(A, B , C, D)
打印结果
[1, 2, 3, [22, 23, 24, 33], 12] # A
[1, 2, 3, [22, 23, 24, 33], 12] # B
[1, 2, 3, [22, 23, 24, 33]] # C
[1, 2, 3, [22, 23, 24]] # D
理解
B, 直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
C, 没有拷贝子对象,所以原始数据改变,子对象会改变
D, 包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变