Python:浅拷贝、深拷贝的理解

深拷贝、浅拷贝只针对有类型嵌套的对象而言。

浅拷贝(shallow copy):浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程

           在浅拷贝中,子对象(或者叫深层对象)在拷贝后的对象中可以看做是对象的引用关系,所以

           浅拷贝后,当原对象的子对象再次发生变化后,拷贝后的对象也会发生变化

深拷贝(deep copy):父对象内的子对象也会一同拷贝

  例:

>>> l1=[1,2,3,[4,5,6]]
>>> import copy
>>> l2=copy.copy(l1)
>>> l3=copy.deepcopy(l1)
>>> l2
[1, 2, 3, [4, 5, 6]]
>>> l3
[1, 2, 3, [4, 5, 6]]
>>> l1
[1, 2, 3, [4, 5, 6]]
>>> l1[3][0]=99
>>> l1
[1, 2, 3, [99, 5, 6]]
>>> l2
[1, 2, 3, [99, 5, 6]]
>>> l3
[1, 2, 3, [4, 5, 6]]
>>> l1[0]=100
>>> l1
[100, 2, 3, [99, 5, 6]]
>>> l2
[1, 2, 3, [99, 5, 6]]
>>> l3
[1, 2, 3, [4, 5, 6]]
>>> 

___________________________

  深拷贝:    

     In[2]: import copy

     In[3]: l1 = [1,2,3,[4,5,6]]
     In[4]: l2 = copy.deepcopy(l1)
     In[5]: l2
     Out[5]: [1, 2, 3, [4, 5, 6]]
     In[6]: l1[3][0]=9 # 更改  l1 子对象
     In[7]: l1
     Out[7]: [1, 2, 3, [9, 5, 6]]
     In[8]: l2
     Out[8]: [1, 2, 3, [4, 5, 6]] #更改 l1 子对象 ,不会影响 l2 

 

 

posted @ 2018-10-15 10:46  昱成  阅读(282)  评论(0编辑  收藏  举报