***补充:
不可变与可变类型
不可变类型:改变数值后,相应的内存地址即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