美文网首页
直接赋值:浅拷贝和深度拷贝

直接赋值:浅拷贝和深度拷贝

作者: 闲云野鹤_23dd | 来源:发表于2021-01-31 19:52 被阅读0次

    直接赋值:浅拷贝和深度拷贝

    直接赋值

    就是对象的引用(别名)

    例子:
    可以看到,对b 赋值了 a 的值, 但是修改b的值,a的值也会发生变化
    因为 赋值 其实就是引用对象的内存地址,并不是重新开辟新的内存空间进行存储,所以a的值 也发生变化

    a = {1: [1,2,3]}
    b = a
    b[2]='1'
    print(a)
    print(b) 
    
    输出结果:
    
    {1: [1, 2, 3], 2: '1'}
    {1: [1, 2, 3], 2: '1'}
    
    
    ## 浅拷贝
    
    浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
    
    例子:
    使用 a.copy()赋值,叫做浅拷贝, 对a的键值对操作不会同步,但是a的子对象,就是a[0]的值 还是引用的同一个内存地址
    
    a = {1: [1,2,3]}
    c = a.copy()
    c[2]='1'
    print(a)
    print(c)
    print('-----')
    a[1].append(4)
    print(a)
    print(c)` 
    
    输出结果:
    
        
    {1: [1, 2, 3]}
    {1: [1, 2, 3], 2: '1'}
    -----
    {1: [1, 2, 3, 4]}
    {1: [1, 2, 3, 4], 2: '1'}
    
    

    深拷贝

    深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

      import copy
    d = copy.deepcopy(a)
    
    d[2]='1'
    print(a)
    print(d)
    print('-----')
    a[1].append(4)
    print(a)
    print(d)`
    

    相关文章

      网友评论

          本文标题:直接赋值:浅拷贝和深度拷贝

          本文链接:https://www.haomeiwen.com/subject/uarpaktx.html