Python学习——深拷贝与浅拷贝

网上资料很多,不重复记录
https://blog.csdn.net/zhubaoJay/article/details/90897028

新增:

b=copy.copy(a)
b=copy.deepcopy(a)
里面拷贝的a是元组,那么与b = a等价,因为元组是不可变类型。

import copy 

a = (11, 22)
b = copy.copy(a)
id(a) == id(b)  # True 
c = copy.deepcopy(a)
id(a) == id(c)  # True 

a = [11, 22]
b = [33, 44]
c = (a, b)
d = copy.copy(c)
id(c) == id(d)  # True 
e = copy.deepcopy(c)
id(c) == id(e)  # False

如果拷贝的对象都是不可变类型,deepcopy与copy相同,
若存在可变元素,则不同。

a = [11, 22, ['a', 'b']]
b = a[:]
id(a) == id(b)  # False
id(a[0]) == id(b[0])  # True
# 切片与copy.copy一样是浅拷贝

字典的拷贝
与切片一样的浅拷贝

d = {name:'zhangsan', age:47, childrens_age:[11, 22]}
co = d.copy()
id(d) == id(co)  # False
id(d[name] == id(co[0])  #True

你可能感兴趣的:(python学习笔记,python)