关于python中的深浅拷贝copy与deepcopy

浅拷贝(藕断丝连):copy.copy() 或者 =

深拷贝(一刀两断):copy.deepcopy()

首先我们需要了解在python中"id()"这个函数可以用来查看变量的的内存地址

然后需要明确深浅拷贝只是针对可变变量而言(不可变变量:字符串、数字、元祖,可变变量:列表、字典、集合

对于不可变变量变量的值是一样的,内存地址就是一样的

对于可变变量变量的值是一样的,不一定内存地址就是一样的

所以深拷贝时会把可变变量重新复制一份保存在新的内存地址当中,而浅拷贝会继续沿用原来的内存地址。

示例:

import copy

list1 = ["faker", 1, True, [1, 2]]
#浅拷贝
list2 = copy.copy(list1)
#修改list1其中一个可变变量
list1[3].append(3)
#会发现list2的值也发生可变化
print(list1,list2)
print(id(list1[3]), id(list2[3]))
#打印结果如下
'''
['faker', 1, True, [1, 2, 3]] ['faker', 1, True, [1, 2, 3]]
1398939718016 1398939718016
'''

 

posted @ 2022-10-31 12:33  种下一颗树  阅读(257)  评论(0)    收藏  举报