浅拷贝拷贝之后的数据指向的是同一地址
a = [11,22,33] b = a print(id(a)) print(id(b))
运行结果如下,可以看到a和b的地址是一致的
深拷贝使用的是copy模块的deepcopy方法
import copy a = [11,22,33] b = a c = copy.deepcopy(a) print(id(a)) print(id(b)) print(id(c)) a.append(34) print(a) print(b) print(c)
运行结果如下:
可以看到深拷贝是重新在内存中分配一块地址,并且地址中的数据和被拷贝的数据是一致的
总结一下:
当数据需要不能被原始数据影响的时候需要使用deepcopy也就是深拷贝
当数据的原始数据不会更改,这时候可以使用浅拷贝