zoukankan      html  css  js  c++  java
  • python中的深浅拷贝

        不可变类型:数字,字符串,元组
        可变类型:列表,字典,集合。

    python为这种需求提供了copy模块。提供了两种主要的copy方法,一种是普通的copy,另一种是deepcopy。我们称前者是浅拷贝,后者为深拷贝。

      是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容

    1.浅拷贝

    通过a=b这种方式赋值只是赋值的引用(内存地址),a和b都指向了同一个内存空间,所以他们的id(地址相同),这种就是浅拷贝

    copy模块里面的copy方法实现

    1、对于 不可 变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
    2、对于 可 变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝

    3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。(操作拷贝对象对原始对象的也是同理)

    2.深拷贝

    copy模块里面的deepcopy方法实现

    1、浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝)
    2、经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了


    ————————————————

    原文链接:https://blog.csdn.net/weixin_44800244/article/details/88909057

  • 相关阅读:
    list1AndCompile
    pickle序列化2
    Servlet简单例子:输出当前日期
    Servlet简单例子:前后端通信
    Java 继承的简单例子
    Java 一个简单的距离工具类
    Java 私有静态成员变量的简单使用
    mysql数据类型
    使用Bootstrap简单案例——导航条+轮播图+模态框+表单
    K-means 聚类
  • 原文地址:https://www.cnblogs.com/liujie12/p/12468257.html
Copyright © 2011-2022 走看看