python的深浅拷贝只对可变类型对象起作用,对不可变类型对象(如字符串,元组)是没有影响的。
所以,我们只关注那些可变的。
比如list,默认是浅拷贝:通过
(1)完全切片[:]
(2)list(),dict()等
(3)copy模块里的copy
拷贝的对象是新的(id是不同的),但对象的内容仅仅是原内容的一个引用,省空间,但此时,改变内容的话会导致拷贝值和原值都发生变化。
另外,深拷贝,是真正的拷贝,即原内容完完整整的拷贝一份给新对象。用copy模块里的copy.deepcopy()就可以做到。
当我们把自己的对象给别人用时,又不希望别人改动你的数据,此时就要用深拷贝,保护数据。但是,从节省空间的角度来看,深拷贝就有点浪费空间了。
因此,对于浅拷贝和深拷贝,各有优势。