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

    言简意赅的解释:

    浅拷贝操作时拷贝的不够深,仅仅是对引用(地址)的拷贝,不涉及值。深拷贝是对对象资源(值)的拷贝。两种拷贝都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对象的元素地址是否和原对象一样,也就是地址复制还是值复制的区别。

    phyon中对象分为可变对象和不可变对象。
    可变对象:可以在不改变其地址的情况下,修改地址所指向的值,例如列表。
    不可变对象:对象地址所指向的值是不能修改的,如果你修改了这个对象的值,那么对象的地址就改变了,这个对象也就不再是原来的对象了。所以无论是深拷贝还是浅拷贝,对不可变对象没有影响。

    创建新对象的方法:
    1)赋值:赋值操作是创建源对象的一个引用,源对象的id和新对象的id是一样的,一个对象修改另一个也会修改。
    2)浅拷贝:源对象与新对象部分元素独立,是否完全独立取决于元素中是否有可变对象,如果有可变对象,则一个对象变化另一个也会随之变化
    3)深拷贝:源对象与新对象完全独立

    结论:
    copy模块中无论是深拷贝deepcopy还是浅拷贝copy,都会创建一个新的对象,新对象的id与源对象的id不同,然后再进行元素的拷贝,这与直接赋值是不同的。
    两种拷贝对不可变对象是没有影响的,需要注意的是可变对象的拷贝。

  • 相关阅读:
    python 的时间复杂度
    python之进制转换
    进程、线程、协程
    [GO]gtk的windows环境搭建
    [GO]并的爬取捧腹的段子
    [GO]并发的网络爬虫
    [GO]百度贴吧的爬虫
    [operator]jenkins+gitlab/Webhook自动构建发布
    [GO]并发实现聊天室服务器
    [GO]文件的收发服务器
  • 原文地址:https://www.cnblogs.com/21summer/p/14793156.html
Copyright © 2011-2022 走看看