深浅copy

***补充:

不可变与可变类型

不可变类型:改变数值后,相应的内存地址即id也发生改变

可变类型:改变数值后,相应的内存地址即id不发生改变

 对于 数字,字符串 深浅copy 都无意义 —————— 因为它们的内存地址不可变

 而对于 字典,元组,列表就不一样了

 浅层copy 仅复制外层数据,内层数据地址依旧相同

 而深层copy 外层,内层数据全都复制(即内存地址全都不同),但pyhton对其数字 字符串的优化 不算

import copy

key = 123

key1 = copy.copy(key)  # 浅层copy

key2 = copy.deepcopy(key) # 深层copy

以上三种输出的 id()  全都相等 因为 深浅copy 对于 字符串,数字 等不可变对象 无意义

key = {'tom': 1, 'jack': 2, 'L': [1,2]}

key1 = copy.copy(key)

key2 = copu.deepcopy(key)

以上三种输出的 id('tom') 全都一样 # 因为对于字符串,数字 深浅copy无意义,但是 key 和 key1 的 id('L') 一样 而key2 与前两者对应的 id('L') 不一样 # key2不仅仅copy表层,内层数据也会copy

原文地址:https://www.cnblogs.com/christmassa/p/9006335.html