python的直接赋值、拷贝以及深拷贝
- 直接复制:是引用1赋值
- 拷贝:就是简单的“复制”,但对象里面如果还有变量则还是引用传递。即赋值原对象,但原对象的子对象依旧为引用
- 深拷贝:就是单纯的“复制”,使用深拷贝时需导入copy包
图解
abcd分别为原对象,赋值对象,拷贝对象(copy.copy())以及深拷贝对象(copy.deepcopy())
数据初始化
import copy
L=[5,6,7]
a=[1,L]
b=a
c=a.copy()
d=copy.deepcopy(a)
print("a:{}\tb:{}\tc:{}\td:{}".format(a,b,c,d))
修改直接赋值、拷贝以及深拷贝后的对象
b.append({1:2})
c.append((4,3))
d.append([5.6])
print("a:{}\tb:{}\tc:{}\td:{}".format(a,b,c,d))
改变子对象L
L.append(100)
print("a:{}\tb:{}\tc:{}\td:{}".format(a,b,c,d))
将原对象指向的地址传递给被赋值的对象 ↩︎