• 深拷贝和浅拷贝


    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就会进行递归拷贝。

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

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

  • 相关阅读:
    Django的FBV和CBV
    爬虫-----selenium模块自动爬取网页资源
    python摸爬滚打之day33----线程
    python摸爬滚打之day032 管道 数据共享 进程池
    python摸爬滚打之day030----进程
    爬虫重复请求超时
    指定页面刷新时间前端
    requests post请求,加上会话功能 以及url 编码问题
    爬虫常用mysql
    python操作excel以及word文档,pdf文档
  • 原文地址:https://www.cnblogs.com/GouQ/p/13667647.html
Copyright © 2020-2023  润新知