深浅拷贝
1.
import copy
#浅拷贝
copy.copy()
#深拷贝
copy.deepcopy()
#赋值
=
2.
对于数字和字符串而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
对于 字典、元组、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
浅拷贝,在内存中只额外创建第一层数据。
深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:Python内部对字符串和数字的优化)
import copy
n1 = {"k1":"young","k2":123,"k3":['yy',456]}
n2=n1
print(id(n1),id(n2))
n3 = copy.copy(n1)
print(id(n1),id(n3))
print(id(n1['k3']),id(n3['k3']))
n3 = copy.deepcopy(n1)
print(id(n1),id(n3))
print(id(n1['k3']),id(n3['k3']))
结果:
2304080 2304080
2304080 2897360
5343232 5343232
2304080 2872144
5343232 5341992