浅拷贝&深拷贝

2019-04-07  本文已影响0人  RossH

概念

  1. b = a:赋值引用,a 和 b 都指向同一个对象。 a 变 b 也变。
赋值
  1. b = copy.copy(a) :浅拷贝, a 和 b 是一个独立的对象,但是,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)。
浅拷贝

当我们使用下面的操作的时候,会产生浅拷贝的效果:

  1. b = copy.deepcopy(a) :深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
深拷贝

例子

import copy
a = [1, 2, 3, 4, ['a', 'b']] 
b = a 
c = copy.copy(a) 
d = copy.deepcopy(a) 
a.append(5) 
a[4].append('c') 

运行后各变量值如下:

a=[1, 2, 3, 4, ['a', 'b','c'],5] 
b=[1, 2, 3, 4, ['a', 'b','c'],5] 
c=[1, 2, 3, 4, ['a', 'b','c']] 
d=[1, 2, 3, 4, ['a', 'b']] 

Note:总结自牛客网答案解析

上一篇 下一篇

猜你喜欢

热点阅读