单层浅拷贝
import copya = 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)) # 内存地址不相同
单层深拷贝
import copya = 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)) # 内存地址不相同
结论一:
不管深拷贝还是浅拷贝对不可变数据类型都是引用内存地址
不管深拷贝还是浅拷贝对可变数据类型都是会重新创建新的内存空间
浅拷贝嵌套
# -----------不可变数据类型---------# 情况一,内嵌可变数据类型import copya = ([1,2],(3,4)) # 不可变数据类型copy_a = copy.copy(a)print(id(a),id(copy_a)) # 内存地址相同# 情况二,内嵌不可变数据类型a = ((1,2),(3,4)) # 不可变数据类型copy_a = copy.copy(a)print(id(a),id(copy_a)) # 内存地址相同#-----------可变数据类型-------------# 情况一,内嵌可变数据类型import copya = [(1,2),[3,4]] # 可变数据类型copy_a = copy.copy(a)print(id(a),id(copy_a)) # 内存地址不相同# 情况一, 可变数据类型 内嵌可变数据类型import copya = [(1,2),(3,4)] # 可变数据类型copy_a = copy.copy(a)print(id(a),id(copy_a)) # 内存地址不相同
深拷贝嵌套
# -----------不可变数据类型---------# 情况一,内嵌可变数据类型import copya = ([1,2],(3,4)) # 不可变数据类型copy_a = copy.deepcopy(a)print(id(a),id(copy_a)) # 内存地址不相同# 情况二,内嵌不可变数据类型a = ((1,2),(3,4)) # 不可变数据类型copy_a = copy.deepcopy(a)print(id(a),id(copy_a)) # 内存地址相同#-----------可变数据类型-------------# 情况一,内嵌可变数据类型import copya = [(1,2),[3,4]] # 可变数据类型copy_a = copy.deepcopy(a)print(id(a),id(copy_a)) # 内存地址不相同print(id(a[0]),id(copy_a[0])) # 内存地址相同print(id(a[1]),id(copy_a[1])) # 内存地址不相同# 情况一, 可变数据类型 内嵌可变数据类型import copya = [(1,2),(3,4)] # 可变数据类型copy_a = copy.deepcopy(a)print(id(a),id(copy_a)) # 内存地址不相同print(id(a[0]),id(copy_a[0])) # 内存地址相同
结论二:
浅拷贝:
深拷贝:
总结:
浅拷贝:
深拷贝:
2019最新的Python入门教程都以打包好,热爱Python的小伙伴可以关注后私信小编“学习”获取!