深浅拷贝
赋值: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]})