Python-深浅拷贝
2022/3/27 11:52:46
本文主要是介绍Python-深浅拷贝,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、数字和字符串
对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
二、其他基本数据类型
对于字典、元祖、列表而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
1.赋值。
赋值,只是创建一个变量,该变量指向原来内存地址,如:
2.浅拷贝
浅拷贝,在内存中只额外创建第一层数据。
import copy n1 = {"x1":"Hello","x2":520,"x3":["World",999]} n3 = copy.copy(n1) print("n1的内存地址为:\n",id(n1)) print("浅拷贝后,n3是新的内存地址,在内存中只额外创建第一层数据:\n",id(n3))
print("n1的结果为:\n",n1) print("n3的结果为:\n",n3)
n3['x1']='你好' # 修改第1层数据 print("n3的结果为:\n",n3) # n3第1次变化 print("n1的结果为:\n",n1) # 原数据n1不变
n3['x3'][0]='世界' # 修改第2层数据 print("n3的结果为:\n",n3) # n3第2次变化 print("n1的结果为:\n",n1) # 原数据变化!
3.深拷贝。
深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
import copy n1 = {"x1":"Hello","x2":520,"x3":["World",999]} n4 = copy.deepcopy(n1) print("n1的内存地址为:\n",id(n1)) print("浅拷贝后,n4是新的内存地址,在内存中将所有的数据重新创建一份(排除最后一层):\n",id(n4))
n4['x1']='你好' # 修改第1层数据 print("n4的结果为:\n",n4) # n4第1次变化 print("n1的结果为:\n",n1) # 原数据n1不变
n4['x3'][0]='世界' # 修改第2层数据 print("n4的结果为:\n",n4) # n4第2次变化 print("n1的结果为:\n",n1) # 原数据n1不变
这篇关于Python-深浅拷贝的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门