做一个15页的网站怎么做,个人网站做什么内容,建网站卖产品怎么样,自己做旅游攻略的网站Python中copy模块里面常用的两个方法copy.copy() 和copy.deepcopy()也就是浅拷贝和深拷贝
1、copy.deepcopy() 深拷贝#xff0c;是对于一个对象所有层次的拷贝。
2、copy.copy()浅拷贝#xff0c;一般来说是对最顶层对象的拷贝。另外浅拷贝对不可变类型#xff08;如是对于一个对象所有层次的拷贝。
2、copy.copy()浅拷贝一般来说是对最顶层对象的拷贝。另外浅拷贝对不可变类型如元组和可变类型如列表的copy不同。
深拷贝
import copya [11, 22, 33]
b [44, 55, 66]
c [a, b]d cprint(c, id(c))
print(d, id(d))e copy.deepcopy(c)
print(e, id(e))a.append(aa)print(c)
print(e)
c 45533224
d 45533224
e 45534624
[[11, 22, 33, aa], [44, 55, 66]]
[[11, 22, 33], [44, 55, 66]]
从打印出来的结果来看e是深拷贝得出来的所以e的地址(也就是id)和c,d的地址不同所以说明e的对象是又开辟了一个内存来去存放数据并且如果c的对象里面又有引用的话e也会去进行深层次的拷贝。如下图。 浅拷贝
import copya [11, 22, 33]
b [44, 55, 66]
c [a, b]d cprint(c, id(c))
print(d, id(d))e copy.copy(c)
print(e, id(e))a.append(aa)print(c)
print(e)
c 45266984
d 45266984
e 45061504
[[11, 22, 33, aa], [44, 55, 66]]
[[11, 22, 33, aa], [44, 55, 66]]
浅拷贝是只拷贝最顶层的对象对于更深层次的引用不去拷贝而是直接引用。 浅拷贝对不可变类型如元组和可变类型如列表的copy不同
import copya [11, 22, 33]
b [44, 55, 66]c (a, b)
d [a, b]
print(---------不可变------------------)
print(c, id(c))
e copy.copy(c)
print(e, id(e))
print(---------可变--------------------)print(d, id(d))
f copy.copy(d)
print(f, id(f))
---------不可变------------------
c 43478912
e 43478912
---------可变--------------------
d 43694120
f 43488720
从上面的代码可以看出在不可变的对象的拷贝中拷贝出来的的对象的地址和原对象的地址一样。而可变对象的拷贝和我们之前说的一样。