Python武器库开发-常用模块之copy模块(十五)

常用模块之copy模块(十五)

在Python编程中,我们经常遇到需要复制或拷贝数据的情况。为了避免不必要的问题和错误,Python提供了copy模块来处理复制操作。本文将介绍copy模块的用法,包括浅拷贝和深拷贝的概念以及如何在不同场景中使用。

我们在Python中使用以下的语句到如copy模块

python 复制代码
import copy

什么是浅拷贝和深拷贝

首先,让我们了解一下浅拷贝和深拷贝的概念,浅拷贝是指只复制了对象的引用,而不复制对象本身。也就是说,新对象和原对象共享同一块内存空间,当一个对象改变时,另一个对象也会跟着改变。深拷贝是指复制了对象及其所有子对象的内容,而不仅仅是对象的引用。也就是说,新对象和原对象拥有各自独立的内存空间,彼此之间互不影响。

在Python中,可以使用copy模块提供的函数来实现浅拷贝和深拷贝。

copy模块提供了两种方法:

  • copy()
  • deepcopy()

下面我们逐一介绍这些方法:

浅拷贝(copy)

浅复制是最简单的一种复制方式,它创建了一个新的对象,该对象与原始对象有相同的值,但不会复制原始对象内部的嵌套对象的引用。Python的copy模块提供了copy.copy()方法,用于执行浅复制

python 复制代码
import copy

original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)

shallow_copy[2][0] = 99

print(original_list)  

以上代码输出的实例:

在上面的示例中,shallow_copy是original_list的浅复制,它们共享内部嵌套列表的引用,相当于指向的内容的地址是相同的,不论是复制对象还是原始对象发生修改,最终指向的内容也会发生变化。

深复制(deepcopy)

深复制创建一个完全独立于原始对象的新对象,包括内部的嵌套对象。Python的copy模块也提供了copy.deepcopy()方法,用于执行深复制。与copy()方法不同,deepcopy()方法返回的是对象的深拷贝。所谓深拷贝,是指新创建的对象和原对象完全分离,互不干扰。如果修改新创建的对象,原对象不会发生改变。在深拷贝的情况下,如果对象包含可变元素,这些元素将在新旧对象之间完全独立。

python 复制代码
import copy

original_list = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original_list)

deep_copy[2][0] = 99

print(original_list)  

以上代码输出的实例:

可以看到,虽然我们通过 deep_copy[2][0] = 99 修改了original_list列表,但是最终输出的列表结果却没有受到影响。这是因为深拷贝复制了对象及其所有子对象的内容,两个列表拥有各自独立的内存空间。

相关推荐
q567315234 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
是萝卜干呀5 分钟前
Backend - Python 爬取网页数据并保存在Excel文件中
python·excel·table·xlwt·爬取网页数据
代码欢乐豆6 分钟前
数据采集之selenium模拟登录
python·selenium·测试工具
Suckerbin37 分钟前
Hms?: 1渗透测试
学习·安全·网络安全
狂奔solar41 分钟前
yelp数据集上识别潜在的热门商家
开发语言·python
Tassel_YUE42 分钟前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
聪明的墨菲特i1 小时前
Python爬虫学习
爬虫·python·学习
努力的家伙是不讨厌的2 小时前
解析json导出csv或者直接入库
开发语言·python·json
云空2 小时前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
newxtc2 小时前
【国内中间件厂商排名及四大中间件对比分析】
安全·web安全·网络安全·中间件·行为验证·国产中间件