zoukankan      html  css  js  c++  java
  • 深浅拷贝再回顾

    print("-----如果是改变对象的第一层-------------")
    import copy
    a1=[1,2,[3,4,5]]
    b1=a1.copy()
    c1=copy.deepcopy(a1)
    a1.append(6)
    print("a1>",a1) # [1,2,[3,4,5],6]
    print("b1>",b1) # [1,2,[3,4,5]]
    print("c1>",c1) # [1,2,[3,4,5]]
    #
    print("-----如果是改变对象的第二层-------------")
    a2=[1,2,[3,4,5]]
    b2=a2.copy()
    c2=copy.deepcopy(a2)
    a2[2].append("ppp")
    
    print("a>",a2)   # a2=[1,2,[3,4,5,"ppp"]]
    print("b>",b2)   # b2=[1,2,[3,4,5,"ppp"]]      浅拷贝,共享子对象的内存,
    print("c>",c2)   # c2=[1,2,[3,4,5]]

    '''
    深浅拷贝总结:
    浅拷贝:拷贝出来的新对象,他们只有对象下的第子对象是共享内存的,所以如果第二层的对象的
    值改变的话,新对象的第二层对象也跟着改变。如果只是父对象改变,则新对象不改变


    深拷贝:新拷贝出来的对象和原来的对象是两个完全不同的对象,子对象也是不同的内存空间,一个改变了
    另外一个不会改变

    '''
  • 相关阅读:
    sed 练习
    正则表达式
    字符转换命令
    命令执行判断依据
    shell 操作环境
    选取命令
    排序命令
    命令别名与历史命令
    变量的学习
    防止恶意跳转
  • 原文地址:https://www.cnblogs.com/one-tom/p/11389550.html
Copyright © 2011-2022 走看看