浅复制与深复制

Python中所有的变量都是对象,Python常用的数据结构就是tuple、list、dict。和C++的不同之处在于将对象加入到容器之中的时候,Python对有些对象进行浅复制,对有些对象进行深复制。

jsonList=[]
tmpDict = {'fileSize':0,'fileType':'txt','fileName':'AAA'}
jsonList.append(tmpDict)
print jsonList
tmpDict['fileName'] = 'BBB'
tmpDict['fileSize'] = 10
tmpDict['fileType'] = 'xml'
jsonList.append(tmpDict)
print jsonList


输出:



这段代码中jsonList中的所有tmpDict对象的值都是tmpDict最后的值。因为用这种形式加入容器的时候,(默认)加入的是tmpDict对象的引用。
所以如果要使用深度复制就需要调用copy.deepcopy(),将上述代码的第三行修改为:

jsonList.append(copy.deepcopy(tmpDict) #import copy

输出:



同时测试了数值与string

ls = []
a = "hello"
b = 1
ls.append(a)
ls.append(b)
a = "world"
b = 2
ls.append(a)
ls.append(b)
print ls

输出:


这时默认是深度复制,所以Python的逻辑还是很清楚的,对于复杂对象的默认复制是浅复制(传引用)










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值