深浅copy

深浅copy

在dict、list、set中

s = {name:alex....}

s2 = s,此时s2和s是共享同一份数据

copy一份新数据

浅copy

 1 data = {
 2     "name":"alex",
 3     "age":18,
 4     "scores":{
 5         "语文":130,
 6         "数学":60,
 7         "英语":98,
 8     }
 9 }
10 
11 d2 = data.copy()
12 data["age"] = 20
13 print(d2)
14 print(data)
15 
16 >>>
17 d2 = {'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
18 data = {'name': 'alex', 'age': 20, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
 1 data = {
 2     "name":"alex",
 3     "age":18,
 4     "scores":{
 5         "语文":130,
 6         "数学":60,
 7         "英语":98,
 8     }
 9 }
10 d2 = data.copy()
11 data["age"] = 20
12 data["scores"]["数学"] = 77  
13 print(d2)
14 print(data)
15 
16 >>>
17 d2 = {'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 77, '英语': 98}}
18 d = {'name': 'alex', 'age': 20, 'scores': {'语文': 130, '数学': 77, '英语': 98}}  #看输出 , 很神奇,两个Dict里age的值是独立的,但score字典里的分数值貌似是共享的

相当于浅copy仅copy内层字典的内存地址,对于内存地址这个杯子内放的什么,数据还是统一的,不是单独copy过来

 深copy

 1 import copy
 2 data = {
 3     "name":"alex",
 4     "age":18,
 5     "scores":{
 6         "语文":130,
 7         "数学":60,
 8         "英语":98,
 9     }
10 }
11 
12 d3 = copy.deepcopy(data)
13 d3["scores"]["语文"] = 149
14 
15 print(d3)
16 print(data)
17 
18 >>深copy就是得到完全独立的数据,但是平常用的比较少
最后,这东西有什么用呢? 坦白讲,以后开发中多数情况下你用不到,但是你有要知道有这个知识点,说不定哪天有个需求就要求你必须确保你的2个复制出来的dict,list必须是独立的了。
原文地址:https://www.cnblogs.com/jiajin-wu/p/11839134.html