python-深浅copy
浅copy
l1 = ['张三','男',18]
l2 = l1.copy()
print(l1,id(l1))
print(l2,id(l2))
--console--
['张三', '男', 18] 2001022374920
['张三', '男', 18] 2001022917576

浅copy会在内存新开辟一个内存空间,存放这个copy的列表,但是列表中的内容还是之前对象的内存地址,所以l1和l2的id值不一样,但是存放的对象地址是一样的,指向的是内容对象的地址
深copy
import copy
l1 = ['张三','男',[18]]
l2 = copy.deepcopy(l1)
print(l1,id(l1))
print(l2,id(l2))
--console--
['张三', '男', [18]] 1476329349896
['张三', '男', [18]] 1476329349960

深copy会在内存中新开辟内存空间,将原列表以及列表内可变数据类型重新创建一份,不可变数据类型则是沿用之前的
浅copy: list,dict 嵌套的可变的数据类型是同一个
深copy: list,dict 嵌套的可变的数据类型不是同一个

浙公网安备 33010602011771号