《python中的深拷贝和浅拷贝》
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了《python中的深拷贝和浅拷贝》,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1368字,纯文字阅读大概需要2分钟。
内容图文
![《python中的深拷贝和浅拷贝》](/upload/InfoBanner/zyjiaocheng/601/4e5790d2a0784658b9ce9a691f7bfc71.jpg)
首先,我们得知道什么是拷贝?
从生活的角度来说拷贝(copy)就是(原件的复制、复写或模仿)
从程序的角度来说就是(“复制”原有的类容)
在pythonk中的拷贝同理,把原件复制既为拷贝。
举例1:
代码:
# 浅拷贝:
a = [1, 2, 3]
b = a
print(id(a))
print(id(b))
输出结果:
2168116617864
2168116617864
(由此可以看出a,b的内存地址不变都是指向[1,2,3]这个列表,此为浅拷贝)
代码:
# 深拷贝
import copy # 导入copy的包
a = [1, 2, 3, 4, 5]
b = copy.deepcopy(a)
print("a的内存地址:", id(a))
print("b的内存地址:", id(b))
输出结果:
1696328956616
1696328954440
(由此可以看出a,b的内存地址改变了,不仅仅是指向同一个列表,而是开辟了一个新的内存空间,此为深拷贝)
举例2:
代码:
import copy
# 深拷贝
a = [1, 2, 3, 4, 5]
b = copy.deepcopy(a)
print("a:", a)
a[0] = 0 # 替换a列表中的1为0
print("a:", a)
print("b:", b)
输出结果:
a: [1, 2, 3, 4, 5]
a: [0, 2, 3, 4, 5]
b: [1, 2, 3, 4, 5]
(用了深拷贝,b的值并没有改变)
代码:
import copy
# 浅拷贝
a = [1, 2, 3, 4, 5]
b = a
print("a:", a)
a[0] = 0 # 替换a列表中的1为0
print("a:", a)
print("b:", b)
输出结果:
a: [1, 2, 3, 4, 5]
a: [0, 2, 3, 4, 5]
b: [0, 2, 3, 4, 5]
(浅拷贝,b的值和a一起改变)
总结:
deep copy:深拷贝,把要拷贝的对象整体复制一份并存在新开辟的空间里;
shallow copy:浅拷贝指,对于要拷贝的对象要复制一份,但是对于其内部的子对象就不复制了,而是直接引用;
内容总结
以上是互联网集市为您收集整理的《python中的深拷贝和浅拷贝》全部内容,希望文章能够帮你解决《python中的深拷贝和浅拷贝》所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。