美文网首页
python深拷贝与浅拷贝

python深拷贝与浅拷贝

作者: 壁花烧年 | 来源:发表于2017-06-10 12:33 被阅读0次

    is 是比较两个引用是否指向了同一个对象(引用比较)。
    == 是比较两个对象指向的空间里的内容是否相等。

    a = [1,2,3]
    b = [1,2,3]
    print(a is b)
    print(a == b)
    

    结果如下:


    is==结果.jpg

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

    a = [1,2,3]
    print(id(a))
    b = a
    print(id(b))
    a.append(4)
    print(a)
    print(b)
    

    结果如下:

    浅拷贝结果.jpg

    深拷贝是对于一个对象所有层次的拷贝(递归)

    import copy
    a = [1,2,3]
    print(id(a))
    b = copy.deepcopy(a)
    print(id(b))
    print(b)
    a.append(666)
    print(a)
    print(b)
    

    结果如下:

    深拷贝结果.jpg
    import copy
    l1 = [1,2,3,4]
    print(id(l1))
    l2 = copy.copy(l1)
    print(id(l2))
    l1.append(666)
    print(l2)
    a = (11,22,33)
    print(id(a))
    b = copy.copy(a)
    print(id(b))
    

    结果如下:

    copy.copy结果.jpg

    从上个例子可以看出copy模块中的copy对于不同的类型,拷贝出的类型也有不同。

    相关文章

      网友评论

          本文标题:python深拷贝与浅拷贝

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