Python笔记,深拷贝与浅拷贝---面试常考

深浅拷贝
主要是针对容器类型里面包含可变容器类型的情况

浅拷贝:只会拷贝第一层地址,修改浅拷贝里面的内容可能会影响原对象

>>> d1
{'a': [1, 2], 'b': 2}
>>> d2 = d1.copy()
>>> d2
{'a': [1, 2], 'b': 2}
>>> d1 is d2
False
>>> d1['a']
[1, 2]
>>> d1['a'].append(3)
>>> d1
{'a': [1, 2, 3], 'b': 2}
>>> d2
{'a': [1, 2, 3], 'b': 2}
>>> id(d1['a'])
140386693626888
>>> id(d2['a'])
140386693626888    #只会拷贝一个地址过来,放到一个新的字典里去
>>> 

深拷贝:会拷贝每一层的值,是完全独立
使用import copy
.copy.deepcopy
模块才是深拷贝,其余的全是浅拷贝

            >>> import copy
			>>> d3 = copy.deepcopy(d1)
			>>> d3
			{'a': [1, 2, 3], 'b': 2}
			>>> d1
			{'a': [1, 2, 3], 'b': 2}
			>>> d3 is d1
			False
			>>> d3['a'].append(5)
			>>> d3
			{'a': [1, 2, 3, 5], 'b': 2}
			>>> d1
			{'a': [1, 2, 3], 'b': 2}
			>>> 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值