zoukankan      html  css  js  c++  java
  • 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]
    
  • 相关阅读:
    让PHP更快的提供文件下载
    thinkphp5接入QQ第三方登录
    tp5隐藏index.php
    thinkphp5 表达式
    后台无限级分类添加的实现方式
    PHP系统左侧菜单栏的管理与实现
    mongoDB基本命令
    Java基础-反射和注解
    Java基础-多线程
    Java基础-网络编程
  • 原文地址:https://www.cnblogs.com/gupan/p/8970112.html
Copyright © 2011-2022 走看看