深浅拷贝

python学习网 2019-07-11 15:30:04

赋值: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]})

阅读(2625) 评论(0)