1、浅拷贝
只复制引用,不复制内容,即指向同一内存地址
a = [11, 22, 33]
b = a
#指向同一内存地址
id(a) == id(b)
2、深拷贝
重新开辟一个内存,复制内容
import copy
a = [11, 22, 33]
b = copy.deepcopy(a)
#指向不同的内存地址
id(a) != id(b)
注:递归拷贝
import copy
a = [11, 22, 33]
b = [44, 55, 66]
c = [a, b]
#使用copy,只对顶层进行深拷贝
e = copy.copy(c)
# c 和 e 指向不同的内存地址
id(c) != id(e)
#但是 c 里面的引用a、b 和 e 里面的引用a、b 指向相同的内存地址
#即 copy 只对第一层的内容进行开辟内存复制
#使用deepcopy,递归拷贝
e = copy.deepcopy(c)
# c 和 e 指向不同的内存地址
id(c) != id(e)
# c 里面的引用a、b 和 e 里面的引用a、b 指向不同的内存地址
#即 deepcopy 对所有要复制内容进行开辟内存复制
#copy可根据当前拷贝的内容数据类型是可变类型还是不可变类型采取不同的处理方式
c = (a, b)
e = copy.copy(c)
# c 和 e 指向相同的内存地址