python模块-copy

copy模块主要用于数据之间的拷贝,有两种基本的拷贝形式,浅复制和深复制。

对于浅复制,只复制一层数据,如果复制的数据中有嵌套数据,嵌套部分的数据并不会被复制,而是通过指针去指向原有数据,如果改变被复制的值,原有数据中的内容也会被改变

对于深复制,复制所有的层级关系,包括嵌套的部分,当改变被复制的值时,原有数值不变

示例

从上图可以看出,更改浅复制列表中嵌套内容之后,之前的列表内容也会随之发生变化,而深复制列表中不存在此问题

对于copy而言,在某些情况下与“=”的功能类似,都能实现复制的功能,但是用“=”时是创建了一个变量,与初始变量相同,更改复制之后的变量同时会改变原有变量,不管其在数据的哪一层。

从上层可以看出,通过=赋值时lst_1和lst_5占用相同内存地址,为同一对象,所以修改lst_5时原有元素也会被修改;但是通过copy复制时,复制前后两个变量并不是同一个对象,改变lst_6中第一层的数据也不会对原有的数据造成影响

以上的内容简介适用于可变对象,比如列表,对于不可变对象,如字符串,=和copy作用一致,由于数据类型不可变,复制之后的变量与原始变量为两个不同的变量,改变复制之后的变量对于原始变量没有任何影响。

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

扫码关注云+社区

领取腾讯云代金券