浅拷贝(藕断丝连):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
'''
标签:内存地址,变量,python,list1,list2,deepcopy,拷贝,copy From: https://www.cnblogs.com/zxyks/p/16843891.html