介绍
这篇文章主要介绍python深拷贝和浅拷贝的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>浅拷贝强>
复制模块里面复制的方法实现。浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象,改变原始对象中为不可变类型的元素的值,不会响拷贝对象。
python学习网,大量的免费python视频教程,欢迎在线学习!
<强>代码演示强>
import 副本 #定义一个列的表,其中第一个元素是可变类型。 list1 =,[[1, 2], & # 39;范# 39;,,66]; #进行浅拷贝 时间=list2 copy.copy (list1); #对象地址是否相同。 打印(id (list1)); 打印(id(用于)); #结果:不同 46177816 46177936 第号一个元素地址是否相同。 打印(id (list1 [0])); 打印(id(用于[0])); #结果:相同 46240432 46240432 #第二个元素地址是否相同。 打印(id (list1 [1])); 打印(id(用于[1])); #结果:相同 45547328 45547328 #改变第一个值,查看复制对象变化。 list1 [0] [0],=, 2; 打印(用于); #结果:复制对象发生变化 [(2,2),& # 39;范# 39;,,66年) #改变第二个值,查看复制对象变化。 list1[1],=, & # 39;通用电气# 39;; 打印(用于); #结果:复制对象没发生变了 [(2,2),& # 39;范# 39;,,66]
<强>深拷贝强>
复制模块里面的deepcopy方法实现。深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。
<强>代码演示强>
import 副本 #定义一个列的表,其中第一个元素是可变类型。 list1 =,[[1, 2], & # 39;范# 39;,,66]; #进行深拷贝 时间=list2 copy.copy (list1); #对象地址是否相同。 打印(id (list1)); 打印(id(用于)); #结果:不同 46177816 46177936 第号一个元素地址是否相同。 打印(id (list1 [0])); 打印(id(用于[0])); #结果:不同 49123856 49588784 #第二个元素地址是否相同。 打印(id (list1 [1])); 打印(id(用于[1])); #结果:相同 45547328 45547328 #改变第一个值,查看复制对象变化。 list1 [0] [0],=, 2; 打印(用于); #结果:复制对象没发生变了 [[1,2],,& # 39;范# 39;,,66年) #改变第二个值,查看复制对象变化。 list1[1],=, & # 39;通用电气# 39;; 打印(用于); #结果:复制对象没发生变了 [[1,2],,& # 39;范# 39;,,66]
以上是python深拷贝和浅拷贝的区别有哪些的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!