python深拷贝和浅拷贝的区别有哪些

  介绍

这篇文章主要介绍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深拷贝和浅拷贝的区别有哪些的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

python深拷贝和浅拷贝的区别有哪些