举例区分Python中的浅复制与深复制
作者:DarkBull 时间:2022-08-20 02:34:57
copy模块用于对象的拷贝操作。该模块非常简单,只提供了两个主要的方法: copy.copy 与 copy.deepcopy ,分别表示浅复制与深复制。什么是浅复制,什么是深复制,网上有一卡车一卡车的资料,这里不作详细介绍。复制操作只对复合对象有效。用简单的例子来分别介绍这两个方法。
浅复制只复制对象本身,没有复制该对象所引用的对象。
#coding=gbk
import copy
l1 = [1, 2, [3, 4]]
l2 = copy.copy(l1)
print l1
print l2
l2[2][0] = 50
print l1
print l2
#---- 结果 ----
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [50, 4]]
[1, 2, [50, 4]]
同样的代码,使用深复制,结果就不一样:
import copy
l1 = [1, 2, [3, 4]]
l2 = copy.deepcopy(l1)
print l1
print l2
l2[2][0] = 50
print l1
print l2
#---- 结果 ----
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [50, 4]]
改变copy的默认行为
在定义类的时候,通过定义__copy__和__deepcopy__方法,可以改变copy的默认行为。下面是一个简单的例子:
class CopyObj(object):
def __repr__(self):
return "CopyObj"
def __copy__(self):
return "Hello"
obj = CopyObj()
obj1 = copy.copy(obj)
print obj
print obj1
#---- 结果 ----
CopyObj
Hello
标签:Python,复制
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python之两种模式的生产者消费者模型详解
2021-07-31 17:44:02
python logging模块的分文件存放详析
2023-04-02 20:27:32
![](https://img.aspxhome.com/file/2023/8/97538_0s.png)
Python PyQt5实战项目之查询器的实现流程详解
2023-07-15 04:19:21
![](https://img.aspxhome.com/file/2023/8/78758_0s.png)
Python删除字符串中字符的四种方法示例代码
2021-09-25 08:23:25
教你一步步实现一个简易promise
2024-04-26 17:11:37
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2024-06-05 09:22:11
在Python程序员面试中被问的最多的10道题
2022-02-27 08:20:03
python scipy 稀疏矩阵的使用说明
2022-06-22 16:20:48
![](https://img.aspxhome.com/file/2023/4/123474_0s.gif)
Python程序设计入门(1)基本语法简介
2023-09-12 05:03:31
window.close(); 关闭浏览器窗口js代码的总结介绍
2024-04-19 10:54:56
JS中模拟函数重载
2008-01-03 16:46:00
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2023-03-09 04:22:05
![](https://img.aspxhome.com/file/2023/8/111988_0s.png)
基于python实现操作redis及消息队列
2021-08-06 22:31:29
VSCode开发必备插件推荐(墙裂推荐!)
2022-06-21 14:09:16
![](https://img.aspxhome.com/file/2023/2/127212_0s.png)
快速解决pandas.read_csv()乱码的问题
2023-07-10 21:14:47
在pycharm中debug 实时查看数据操作(交互式)
2023-01-19 08:31:11
![](https://img.aspxhome.com/file/2023/4/66324_0s.jpg)
CentOS 7安装MySQL的详细步骤
2024-01-25 19:59:17
python实现文件快照加密保护的方法
2022-08-21 20:01:29
简介Django框架中可使用的各类缓存
2022-01-16 13:02:39
开源MySQL公司停止提供企业版源代码tar包
2009-01-14 13:02:00