zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝

    1. 浅拷贝

    • 浅拷贝是对于一个对象的顶层拷贝

    通俗的理解是:拷贝了引用,并没有拷贝内容

    最常用的赋值语句其实就是浅拷贝。

    copy模块中的copy.copy是浅拷贝

     这里需要注意,e拷贝的是c里面所有的东西,在下面的例子中,c里面是两个指向(a和b),因此e拷贝了c里面的两个指向,而没有拷贝c的地址。也就是说浅拷贝是顶层拷贝。

    2. 深拷贝

    • 深拷贝是对于一个对象所有层次的拷贝(递归)

    深拷贝不仅拷贝了指向,同时也重新开辟了内存空间,把指向的内容拷贝到了新的内存空间中。

     

     ---------------------------------------------------------------------------------------------------------------------------

    注意:如果copy.copy和copy.deepcopy拷贝的是元组,并且元组内部的元素也是不可变的,那么它不会进行浅拷贝,仅仅是指向。原因:因为元组是不可变类型,那么意味着数据一定不能修改。和''=''一样。

     注意:如果copy.copy和copy.deepcopy拷贝的是元组,但是元组内部的元素是可变的,那么copy.copy不会进行浅拷贝,仅仅是指向。而copy.deepcopy会进行深拷贝。

     总而言之,如果拷贝的内容都是不可变类型的,那么copy.copy和copy.deepcopy一样,如果拷贝的内容中存在可变类型,那么copy.deepcopy就会进行递归拷贝。

     -----------------------------------------------------------------------------------------------------------------

    如果一个变量等于另一个变量的切片,那么也是浅拷贝

  • 相关阅读:
    响应式开发
    web作业小结
    js的简单数据类型和复杂数据类型
    JavaScript 字符串对象
    JavaScript 数组篇
    JavaScript 对象篇
    spfa优化
    HZNU Training 28 for Zhejiang Provincial Competition 2020
    [kuangbin带你飞]专题十一 网络流
    HZNU Training 26 for Zhejiang Provincial Competition 2020
  • 原文地址:https://www.cnblogs.com/GouQ/p/13667647.html
Copyright © 2011-2022 走看看