直接赋值
直接赋值:其实就是对象的引用(别名)。
a=[1,2,3,4,{0,1,2},10]
#直接赋值,a、b指向同一个地址
b = a #b=[1, 2, 3, 4, {0, 1, 2}, 10]
a.append(5) #a追加5,a指向的地址所存储的值追加5
b #b引用同一地址的值 [1, 2, 3, 4, {0, 1, 2}, 10, 5]
浅拷贝
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
a=[1,2,3,4,[0,1,2],10]
#浅拷贝 [1, 2, 3, 4, [0, 1, 2], 10]
b=a.copy()
#a本身追加数据,b不会改变
a.append(0) #[1, 2, 3, 4, [0, 1, 2], 10, 0]
b #[1, 2, 3, 4, [0, 1, 2], 10]
#a的子对象追加数据,b的子对象会随之改变
a[4].apppend(4) # [1, 2, 3, 4, [0, 1, 2, 4], 10, 0]
b #[1, 2, 3, 4, [0, 1, 2, 4], 10]
深拷贝
from copy import deepcopy
a=[1,2,3,4,[0,1,2],10]
b=deepcopy(a) #b=[1, 2, 3, 4, [0, 1, 2], 10]
#修改a子对象
a[4].append(5) #a=[1, 2, 3, 4, [0, 1, 2, 5], 10]
b #b=[1, 2, 3, 4, [0, 1, 2], 10]
#修改a本身
a.append(5) #a=[1, 2, 3, 4, [0, 1, 2, 5], 10, 5]
b #b=[1, 2, 3, 4, [0, 1, 2], 10]