目录
一、案例推导
在python中,也有深拷贝和浅拷贝的概念,在简单的对象使用中,深拷贝和浅拷贝的区别还体现不出来,但是在列表、字典等数据中,未区分深拷贝的浅拷贝会影响我们程序的功能。
1.1 浅拷贝案例
if __name__ == "__main__":
# main.run0428()
testP1 = 1
testP2 = testP1
testP1 = 2
print("testP2:", testP2)
testList1 = [1, 2, 3]
testList2 = testList1
testList1[1] = 3
print("testList2:", testList2)
打印结果
testP2: 1
testList2: [1, 3, 3]
1.2 python浅拷贝以及深拷贝剖析
和C、C++、JAVA类似,对于可变对象(列表、字典等),如果通过变量1定义了一个复杂对象,再将变量1赋值给变量2,其实变量1和变量2都是指向同一块内存空间,修改变量1中的数据,由于变量2也是指向变量1中的内存空间,所以变量2也会做出相应修改(不可变对象(如元组、字符串、数字等)python可识别,所以不会做出修改)。
二、python深拷贝方式
python的深拷贝很简单,只需要在需要拷贝的对象后调用copy()函数即可
if __name__ == "__main__":
# main.run0428()
testP1 = 1
testP2 = testP1
testP1 = 2
print("testP2:", testP2)
testList1 = [1, 2, 3]
testList2 = testList1.copy()
testList1[1] = 3
print("testList2:", testList2)
打印结果
testP2: 1
testList2: [1, 2, 3]