python 浅拷贝与深拷贝
- 赋值引用
>>> a= {1:[1,2]}
>>> b = a
>>> b[2]=3
>>> b{1: [1, 2], 2: 3}
>>> a
{1: [1, 2], 2: 3}a、b指向同一个对象,父对象与子对象的更新均关联。
- 浅拷贝
>>> 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是一个独立的对象,但相同的子对象指向同一对象,相关联。
- 深拷贝
>>> 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完全拷贝了父对象和子对象,完全独立