首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简析python3深浅复制与赋值

一、先来看看浅复制,list和dict中的copy方法,copy模块中的copy函数,都属于浅复制,即最外层对象完全复制一份,而内层对象只是引用(还是指向原来的内存地址)

二、然后是深复制,copy模块的deepcopy函数,即整个对象内外层统一在内存中拷贝了一份

三、Python3中赋值操作其实是对象的引用,相当于起了个别名。可以使用 id 函数验证

四、通过id查看内存

1、list_two和list_one是赋值关系,即整个内外层对象的引用,内外层都指向同一内存

2、list_three和list_one是通过列表的copy方法拷贝的,属于浅拷贝(外层对象完全拷贝,内层对象只是引用)

内层对象只是引用,指向同一内存

3、list_four和list_one是通过copy.copy()函数拷贝的,也属于浅拷贝

内层对象只是引用,指向同一内存

4、list_five和list_one是通过copy.deepcopy()函数拷贝的,属于深拷贝(内外层对象统一复制一份到新内存)

内层对象也拷贝了一份,内存地址不一样

总结:赋值和复制是完全相反的(赋值是全引用,深复制是全复制), 自带的copy方法和模块的copy函数都是浅复制(如果有问题的话关注小编给你解答哦~)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180122A0CDCR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券