深浅拷贝总结

#__author__:Administrator}
#data: 2017/11/13
# s = [1,'xuxu','dazui']
# s1 = s.copy()
# s1[0] = 2
# print(s1)
# print(s)

import copy
D = {'name':'xuxu','age':'24'}#只有顶级对象(一层)
c1 = copy.copy(D)
c2 = copy.deepcopy(D)
print(id(D)) #形成了三个对象
print(id(c1))
print(id(c2))

D['name'] = 'xuxu6'#改变源,源改变,深浅拷贝不变
print(D)
print(c1)
print(c2)


D = {
'xuxu':{'first':'a','second':'b'},
'toutou':{'dog':'c','cat':'d'}
}
import copy
c1 = copy.copy(D)
c2 = copy.deepcopy(D)

print(D)#未做任何改动的时候值都是一样的
print(c1)
print(c2)

print(id(D))#可以看出内存空间对象不一样
print(id(c1))
print(id(c2))

D['xuxu']['first'] = 0#改变源对象的值

print(D)#D,c1改变,c2不变
print(c1)
print(c2)

#结论
'''
深浅拷贝都是对源对象的复制,占用不同的内存空间
如果源对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象
如果源对象不止一级目录的话,源做任何改动,都要影响浅拷贝,但不影响深拷贝
序列对象的切片其实是浅拷贝,即只拷贝顶级的对象
切片也属于浅拷贝
浅考只拷贝第一层
深烤拷贝所有
'''
posted @ 2017-11-13 16:41  无敌帅帅头  阅读(110)  评论(0编辑  收藏  举报