成都9班-汤海洋 发表于 2021-11-19 21:56:36

python中的拷贝

a = ]# 原始对象
b = a# 赋值,传对象的引用
c = copy.copy(a)# 对象拷贝,浅拷贝
d = copy.deepcopy(a)# 对象拷贝,深拷贝
a.append(5)# 修改对象a
a.append('中国')# 修改对象a中的['a', 'b']数组对象
# 1.a改变,打印a本身就会改变
print(a)#   , 5]
#2. a改变,因为a是赋值给b ,只是同时两个别名指向同一个存储地址,
# 所以改变a, b 也会改变
print(b)#   , 5]
#3. a改变,因为a是浅拷贝给c,只会独立拷贝出对象本身,所以对象本上不会被改变,
# 但是c下面的子对象,不会拷贝,还是指向原来的内存地址,所以会改变a的子对象
#c的子对象也会改变
print(c)#   ]
# 4.a改变,因为是a深拷贝给d ,d的本身和子对象,都会拷贝到另一个存储空间,
# 所以改变a不会造成d的改变
print(d)#   ]
深拷贝和浅拷贝的区别是:

1、直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变。

2、copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变。

3、深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变。
页: [1]
查看完整版本: python中的拷贝