一、单层拷贝 不管深拷贝还是浅拷贝对不可变数据类型都是引用内存地址 不管深拷贝还是浅拷贝对可变数据类型都是会重新创建新的内存空间 赋值是指向同一个对象,内存地址不变 例子: 1、单层浅拷贝: 不可变类型:int、字符串、元组 a = 1 # 不可变类型 copy_a = copy.copy(a) # 单层浅拷贝 print(id(a),id(copy_a)) #内存地址相同 a = [1,2] # 可变类型 copy_a = copy.copy(a) #单层浅拷贝 print(id(a),id(copy_a))#内存地址不相同 2、单层深拷贝: a = 1 # 不可变类型 copy_a = copy.deepcopy(a) print(id(a),id(copy_a)) #内存地址相同 a = [1,2] # 可变类型 copy_a = copy.deepcopy(a) print(id(a),id(copy_a))#内存地址不相同 3、赋值: l1 = [1,2,3,4] 可变类型 l2 = l1 print(id(l1),id(l2)) # 内存地址相同 s1 = 'a' 不可变类型 s2 = s1 print(id(s1),id(s2)) # 内存地址相同 二、嵌套拷贝 总结: 浅拷贝: 外层是不可变类型、不管内层是否可变都是引用拷贝 外层是可变类型