python 浅拷贝与深拷贝

时间:2021-08-19 03:10:29
  1. 赋值引用 

    >>> a= {1:[1,2]}
    >>> b = a
    >>> b[2]=3
    >>> b

    {1: [1, 2], 2: 3}

    >>> a
    {1: [1, 2], 2: 3}

    a、b指向同一个对象,父对象与子对象的更新均关联。

  2. 浅拷贝
    >>> a= {1:[1,2]}
    >>> b=a.copy()
    >>> b[2]=3
    >>> b
    {1: [1, 2], 2: 3}
    >>> a
    {1: [1, 2]}
    >>> a[1].append(3)
    >>> b
    {1: [1, 2, 3], 2: 3}
    >>> a
    {1: [1, 2, 3]}

    a、b是一个独立的对象,但相同的子对象指向同一对象,相关联。

  3. 深拷贝
    >>> import copy
    >>> a= {1:[1,2]}
    >>> b=copy.deepcopy(a)
    >>> a[2]=3
    >>> b
    {1: [1, 2]}
    >>> a
    {1: [1, 2], 2: 3}
    >>> a[1].append(4)
    >>> a
    {1: [1, 2, 4], 2: 3}
    >>> b
    {1: [1, 2]}

    a、b完全拷贝了父对象和子对象,完全独立