深浅拷贝

Posted yoyoua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深浅拷贝相关的知识,希望对你有一定的参考价值。

浅拷贝:

浅拷贝只拷贝一次,浅拷贝只拷贝指针。

import copy
copy.copy()  #浅拷贝
a1 = 123123
a2 = 123123
print(id(a1))  #查看内存地址
print(id(a2))
#22745648
#22745648

a3 = copy.copy(a1)
print(id(a1))
print(id(a3))
#22745648  #内存地址相同
#22745648

深拷贝:

深拷贝拷贝多层,深拷贝可以重新申请空间并将数据复制过来

 1 n1 = {k1:wu,k2:123,k3:[alex,456]}
 2 n2 = n1
 3 print(id(n1))  #39035368
 4 print(id(n2))  #39035368
 5 n3 = copy.copy(n1)
 6 n4 = copy.deepcopy(n1)
 7 print(id(n1))  #39035368
 8 print(id(n3))  #39295376
 9 print(id(n4))  #39035608
10 print(id(n1[k3]))  #46733552
11 print(id(n3[k3]))  #46733552
12 print(id(n4[k3]))  #46731352
13 
14 dic = {
15     "cpu":[80,],
16     "mem":[80,],
17     "disk":[80,],
18 }
19 print(brefore,dic)
20 new_dic = copy.copy(dic)
21 new_dic = copy.deepcopy(dic)
22 new_dic[cpu][0] = 50
23 print(dic)
24 print(new_dic)
25 #浅拷贝  {‘disk‘: [80], ‘mem‘: [80], ‘cpu‘: [50]}
26 #        {‘disk‘: [80], ‘mem‘: [80], ‘cpu‘: [50]}
27 #深拷贝  {‘cpu‘: [80], ‘mem‘: [80], ‘disk‘: [80]}
28 #        {‘cpu‘: [50], ‘mem‘: [80], ‘disk‘: [80]}

 

以上是关于深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

《关于JavaScript的深浅拷贝》

python--is/id==,集合,深浅拷贝

python深浅拷贝

我要学python之深浅拷贝原理

Python高级语法-深浅拷贝-总结(4.2.1)

Python 的深浅拷贝 终于明白了