python避坑指南01——python深拷贝和浅拷贝

目录

一、案例推导

        在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]
原文地址:https://www.cnblogs.com/gupan/p/8970112.html