美文网首页
深浅拷贝

深浅拷贝

作者: 流蓝浅 | 来源:发表于2018-04-03 21:03 被阅读0次
    内存分析.png
    1:is 和 ==的区别

    is 是比较两个引用是否指向了同一个对象(地址引用比较)。
    == 是比较两个对象是否相等。(比较的数值)

    2:简单赋值
    图片.png
    3:浅拷贝

    浅拷贝是对于一个对象的顶层拷贝 仅仅为其第一层建立了一个引用

    import copy
    
    a = [1,2,3,4]
    b = a.copy() # 将b中的内容复制了一份给了另一个地址
    # b = a
    print(a==b)
    # a = [1,2,3,9]
    a.append(3)
    print(a==b)
    print(a)
    print(b)
    
    3:深拷贝

    递归的拷贝这个对象深层次链接的对象
    比如列表中套列表这样的

    我们来思考一下,在Python内部,整数对象是如此广泛地被使用,尤其是那些比较小的整数。短短几秒之间,我们可能就要用的它们成千上万次,如果我们在创建它们的时候使用malloc来请求分配内存,删除它们时再调用free来释放内存。显然,这样的性能水平是不可能达到我们的要求的,而且也会造成极大的不必要的浪费。

    于是,在Python内部,对于小整数使用了对象池技术。
    我们可以看出,在Python2.7中,“小整数”的定义是[-5,256],而这个指向一个整数对象数组的指针small_ints就是这个对象池机制的核心。如果我们想要重新定义“小整数”怎么办?简单,我们可以修改源代码并重新编译。

    对于小整数对象,Python直接把它们缓存在小整数对象池中,用于共享

    >>> a=1
    >>> b=1
    >>> a is b
    True
    >>> a=256
    >>> b=256
    >>> a is b
    True
    >>> a=257
    >>> b=257
    >>> a is b
    False
    

    相关文章

      网友评论

          本文标题:深浅拷贝

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