|-- 赋值(基本数据类型)
主要的操作,栈内存的复制
|-- 浅拷贝
copy就是浅拷贝,只把对象a的所有内容,找到一个内存空间存放一份,再赋值为新的变量。而且并不是把对象完成的拷贝,而是仅仅拷贝第一层对象,如果对象存储子对象,那么子对象还是藕断丝连。
a=[1,2,3]
from copy import copy
b = copy(a)
#此时b=[1,2,3]并且对b执行操作b.append(4),会得到b=[1,2,3,4],a=[1,2,3],不会影响a的值
|-- 深拷贝
如果一个对象中又含有其他对象,使用浅拷贝就只会把包含的id给复制一份,那么对新对象的内容的操作就会影响到旧对象的内容。此时就只能使用深拷贝,即递归查找引用对象,找到内存单元,拷贝内容并开辟内存空间,再存放一份。
实例:
最佳实践:
1、需要将当前对象拷贝的时候,一. 般建议拷贝为浅拷贝,(效率高, 内存占有少)
2、如果说,就是需要完全分离,请使用深拷贝
注意:元组/字符串/数值不可变类型,所有深浅拷贝后,永远只有一份内存(特殊情况,如元组中存在可变内存的元素(元组中有子元素列表)则不符合该条目 )