通俗地谈一下深浅COPY的区别,顺便做个笔记。(纯手打,如有不对之处还望大牛指导改正。)

个人觉得区分这个概念需要从数据类型来切入:

  1.如果“被复制对象”(后面简称“原对象”)的数据类型为不可变数据类型(int,str等)

    这种情况的深、浅COPY没有任何差别。

  2.如果原对象的数据类型为可变的数据类型(list,dict,set等)

    1>浅COPY会复制一个新的父级(可以理解为存储数据的外壳),而外壳里面的元素是共用“原对象”的元素。

      属性呈现:“原对象”元素的改变会让COPY来的数据发生改变。

    2>深COPY不仅会复制一个新的外壳,连“原对象”里面的元素也会复制一个个新的元素(但是不可变数据类型的元素除外,也就是不可变数据类型的元素还是延用“原对象”的内存地址)

      属性呈现:“原对象”元素的改变不会让COPY来的数据发生改变,他们是两个独立的个体。

 

版权声明:本文为summer10021725原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/summer10021725/p/12369734.html