浅拷贝
概念:
对于一个对象的顶层拷贝,只是将原有的对象打上一个新标签,
所以当被拷贝对象值被改动的时候,拷贝的对象也会发生变化。
例如:
# = 号浅拷贝
i = [11, 22, 33]
j = i
# copy.copy()方法
j = copy.copy(i)
当最外层对象为可变类型时,copy后得到的对象指向新的内存空间
当最外层对象为不可变类型时,copy后得到的对象指向原对象的内存空间
深拷贝
概念:
对于一个对象所有层次的拷贝(递归),
拷贝了内容 并重新创建一个内存,
将被拷贝对象完全在拷贝一遍作为独立的新个体,
所以当被拷贝对象值被改动的时候, 不会影响拷贝对象
例如:
i = [11, 22, 33]
# 深拷贝 copy.deepcopy()方法
j = copy.deepcopy(i)
当拷贝的对象内外层都为不可变类型时,deepcopy后的对象会指向原对象的内存空间
深浅拷贝的作用
1.减少内存的使用
2.以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。
网友评论