深浅拷贝

赋值:b = a: 赋值引用,a 和 b 都指向同一个对象。a变化,b也会变化。

深浅拷贝

浅拷贝:拷贝父对象,不会拷贝对象的内部的子对象。a变化,b也会变化。

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

b = a.copy()

a, b

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

a[1].append(4)

a, b

({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深浅拷贝

深拷贝:copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。a变化,b不会变化。

import copy

c = copy.deepcopy(a)

>>> a, c

({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

>>> a[1].append(5)

>>> a, c

({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

深浅拷贝