Python深拷贝、浅拷贝

浅拷贝

对一个对象的顶层拷贝

拷贝了引用,并没有拷贝内容

a = [22,33]
b = a
print(id(a))  # 8205776
print(id(b))  # 8205776
a.append(44)
print(b)  # [22,33,44]
a = [[1,2],[3,4]]
b = a
print(id(a))    # 46283312
print(id(b))    # 46283312
print(id(a[0])) # 46283192
print(id(b[0])) # 46283192
print(id(a[1])) # 46284112
print(id(b[1])) # 46284112

b = a 让b这个变量指向a的空间

d = copy.copy(c) 复制所有c指向的数据到一个新空间, 但是不会递归copy

 

深拷贝

对一个对象所有层次的拷贝(递归)

import copy
a = [22,33]
b = copy.deepcopy(a)
print(id(a))  # 54868448
print(id(b))  # 54869328
a.append(33)
print(b)  # [22,33]
import copy
a = [[1,2],[3,4]]
b = copy.deepcopy(a)
print(id(a))    # 23476904
print(id(b))    # 53065208
print(id(a[0])) # 23476784
print(id(b[0])) # 53065408
print(id(a[1])) # 23477664
print(id(b[1])) # 53065448

d = copy.deepcopy(c)  会将c指向的空间进行递归copy 

 

posted @ 2019-06-24 19:41  yyfgrd  阅读(149)  评论(0)    收藏  举报