一、概述:
Python中拷贝的方法有两种:
- 浅拷贝:copy()
- 深拷贝:copy.deepcopy()
二、理解深拷贝和浅拷贝
2.1 拷贝的应用
浅拷贝
# 原始数据
list1 = ["php", "java", "python"]
# 对list进行复制-->list2
list2 = list1.copy()# 查看id值/内存地址
print(list2) # ['php', 'java', 'python']
print("list2:", id(list2)) # list2: 1798099903936
print("list1:", id(list1)) # list1: 1798100127552
深拷贝
# 导包
import copy# 原始数据
list1 = ["php", "java", "python"]# 对list进行复制-->list2
list2 = copy.deepcopy(list1)# 查看id值/内存地址
print(list2) # ['php', 'java', 'python']
print("list2:", id(list2)) # list2: 1798099903936
print("list1:", id(list1)) # list1: 1798100127552
2.2 关联关系
1、浅拷贝数据时,原始数据a,拷贝数据b,“可变和不可变数据”都会指向同一内存地址id
1.1 当修改b中“可变数据类型”数据时,其id不会变,这时a中的对应数据也会随着变更
1.2 当修改b中“不可变数据类型”不数据时,其id会变,这时a中的对应数据不会随着变更
2、深拷贝数据时,原始数据a,拷贝数据b;
不可变数据类型指向同一id,可变数据类型指向不同id
2.1 当修改b中“不可变数据类型”时,修改的数据id会变更,这时a中的对应数据不会随着变更,不影响a中的数据(修改不可变类型与浅拷贝一致,都不会影响原始数据)
2.2 当修改b中“可变数据类型”不数据时,因为深拷贝对于可变数据指向了不同的id,所以修改数据互补影响