copy copy.deepcopy 拷贝、浅拷贝、深拷贝
浅拷贝
拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容。(只能拷贝表层可变数据,内存地址会修改)
深拷贝
拷贝的程度深,自己开辟一块内存,将拷贝内容全部拷贝过来。
深浅拷贝的优缺点对比
(1)深拷贝拷贝程度高,将原数据复制到新的内存空间中。改变拷贝后的内容不用影响原数据内容。但是深拷贝耗时长,且占用内存空间。
(2)浅拷贝拷贝程度低,只复制原数据的地址。其实是将副本的地址指向原数据地址。修改副本内哦让那个,是通过当前地址指向原数据地址,去修改。所以修改副本内容会影响原数据内容。但是浅拷贝耗时短,占用内存空间少。
a = 1
b = a
list1 = [1,2,3]
list2 = list1 #拷贝, list1和list2执行同一块内存地址
del list2[2]
print(list1) #[1,2]
#浅拷贝
listold = [1,2,3,4,5]
listnew = listold.copy() #浅复制
listnew.pop()
print(listold) #[1,2,3,4,5]
dict_data = {'data':[1,2,3]}
new_dict_data = dict_data.copy()
del dict_data['data'][2]
print(new_dict_data) #{'data':[1,2]}
#深拷贝
from copy import deepcopy
dict_data1 = {'data':[1,2,3]}
dict_data2 = deepcopy(dict_data1)
del dict_data2['data'][2]
print(dict_data1) #{'data':[1,2,3]}