• python:浅拷贝和深拷贝


    直接上代码:

    # 浅拷贝、深拷贝:拷贝出来的新对象的地址和原对象是不一样的,但是:
    # 对于:
    # 浅拷贝:新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的
    # 对于:
    # 深拷贝:新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址不相同
    
    import copy
    a=[1,2,3,4,5,['a','b']]
    #原始对象
    b=a#赋值,传对象的引用
    c=copy.copy(a)#对象拷贝,浅拷贝
    d=copy.deepcopy(a)#对象拷贝,深拷贝
    print("a=",a,"    id(a)=",id(a),"id(a[5])=",id(a[5]))
    print("b=",b,"    id(b)=",id(b),"id(b[5])=",id(b[5]))
    print("c=",c,"    id(c)=",id(c),"id(c[5])=",id(c[5]))
    print("d=",d,"    id(d)=",id(d),"id(d[5])=",id(d[5]))
    print('id(a[1])=',id(a[1]))
    print('id(c[1])=',id(c[1]))
    print('id(d[1])=',id(d[1]))
    print("*"*70)
    
    a[0] = 0
    a.append(6)#修改对象a
    a[5].append('c')#修改对象a中的['a','b']数组对象
    print("a=",a,"    id(a)=",id(a),"id(a[5])=",id(a[5]))
    print("b=",b,"    id(b)=",id(b),"id(b[5])=",id(b[5]))
    print("c=",c,"       id(c)=",id(c),"id(c[5])=",id(c[5]))
    print("d=",d,"            id(d)=",id(d),"id(d[5])=",id(d[5]))
    print('id(a[1])=',id(a[1]))
    print('id(c[1])=',id(c[1]))
    print('id(d[1])=',id(d[1]))

  • 相关阅读:
    《C++ Primer》读书笔记之第15章:面向对象编程
    Color Space: HSI
    Color Space: Lab
    C# 特殊关键字
    WPF 打开文件、文件夹
    EmguCV+Win7+Visual C# 2012 配置
    C# 常用结构
    C#抽象类、抽象方法、虚方法
    C# Image 、 byte[] 、Bitmap之间的转化
    java反射机制基础
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/12424813.html
Copyright © 2020-2023  润新知