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

    1. 浅拷贝

    • 浅拷贝是对于一个对象的顶层拷贝

    通俗的理解是:拷贝了引用,并没有拷贝内容

    a=[11,22,33]
    print(id(a))
    b=a#浅拷贝
    print(id(b))
    a.append(44)
    print(a)
    print(b)
    a={'name':'xiaowang'}
    print(id(a))
    b=a
    print(id(b))
    a['id']=100
    print(a)
    print(b)

    2. 深拷贝

    • 深拷贝是对于一个对象所有层次的拷贝(递归)
    import copy
    a=[11,22,33]
    print(id(a))
    b=copy.deepcopy(a)#深拷贝
    print(id(b))#b的id和a的id不一样
    print(b)
    a.append(44)
    print(a)
    print(b)

    3. 拷贝的其他方式

    浅拷贝对不可变类型和可变类型的copy不同
    import copy
    a = [11,22,33]
    b = copy.copy(a)
    print(id(a))
    a.append(44)
    print(a)
    print(b)
    a = (11,22,33)
    b = copy.copy(a)
    print(id(a))
    print(id(b))
    分片表达式可以赋值一个序列
        a = "abc"
    
        b = a[:]
    字典的copy方法可以拷贝一个字典
        d = dict(name="zhangsan", age=27)
    
        co = d.copy()
    有些内置函数可以生成拷贝(list)
        a = list(range(10))
    
        b = list(a)
    copy模块中的copy函数
        import copy
    
        a = (1,2,3)
    
        b = copy.copy(a)
  • 相关阅读:
    【C语言天天练(二二)】位操作
    远程调用内核接口的封装类(RCKObjs)
    03010_防止SQL注入
    PHP 5 SimpleXML 函数
    PHP 5 String 函数
    PHP 5 MySQLi 函数
    PHP 杂项 函数
    PHP PDO
    PHP 5 时区
    分享海量 iOS 及 Mac 开源项目和学习资料
  • 原文地址:https://www.cnblogs.com/weihu/p/8072065.html
Copyright © 2011-2022 走看看