Python浅拷贝和深拷贝的思考

news/2024/7/7 7:15:16

     简而言之,浅拷贝就是只是复制了引用,并没有复制引用指向地址的内容,可以看做是同一个对象,使用is操作符时返回true,而深拷贝刚好相反,不管变量或者对象包含多少其他的引用都原模原样复制一份,即在内存中开辟了新的空间。

      1、Python的浅拷贝:

     

    浅拷贝内存示意图:

    

     2、Python的深拷贝

     

    深拷贝内存示意图:

   

  在copy包中还有一个复制的方法为copy(),这个方法有点特殊,如果是可变类型对象那么会重新创建第一层,嵌套的引用不会重新开辟内存,但是如果为不可变类型对象只是指向同一块内存:

   

   这里需要额外说的"=="只是比较值,“is”则是比较是否为同一个对象。

   即list1 == list2 为不同的对象指向不同的内存地址,但是返回True,而list1 is list2为False,因为不同对象。

   

  


http://www.niftyadmin.cn/n/2015589.html

相关文章

Mysql创建多列唯一索引Sql

ALTER TABLE t_city_combo ADD UNIQUE INDEX t_city_combo_index (combo_id, combo_name, city_id) USING BTREE 语法 ALTER TABLE 表名英文 ADD UNIQUE INDEX 索引名英文 (列1英文, 列2英文, 列3) USING BTREE Navicat 创建索引,需要如下步骤 在表右键-->设计…

Python对象的命名和私有化

在Python中常见的变量和方法等命名通常是这样的:name:一般变量,在类中,类外都可以使用,对象直接可以访问__name:双下划线私有变量,在类中可以访问,类外不能直接访问_name:单下划线的变量&#x…

在Jmeter中使用自定义编写的Java测试代码

分类: 测试工具 2007-01-19 15:02 8204人阅读 评论(3) 收藏 举报 测试javaloadrunner编译器importtemplates我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser",&…

Phtots框架简介

2019独角兽企业重金招聘Python工程师标准>>> Reference: http://www.jianshu.com/p/cc85282fac5e Phtots框架: 1.PHAsset:包含具体的每个照片的资源信息. 看看些常用的 api (1).资源的原信息. mediaType:PHAssetMediaType类型的枚举值:PHAssetMediaTypeUnknown 不知…

什么是零代码开发平台,为什么企业IT应该重视?

文/明道云创始人任向晖 零代码软件开发并非一个全新的概念。早在1992年,最早的零代码企业软件构建工具就出现在了微软的Office套件中,很多企业极客都记得那个叫做Access的数据库应用。只不过,当年的Access只是一个单机版的应用,数…

Python居然可以定义两个同名通参数的函数

一个意外的场景,我发现Python模块中是可以定义相同的名称和参数的函数的,虽然在eclipse中报错了,但是执行时没有问题的,这个是IDE的问题。 其中的含义是因为第一个函数原本由test指向,然后解释器解析到第二个test函数时…

课程第九天内容《基础交换九》 补充内容

2019独角兽企业重金招聘Python工程师标准>>> 程回顾:For 人民币 时间点 项目前期 项目中期 项目后期 console - …

2020年SaaS行业正在浮现的七大趋势

文/明道云创始人 任向晖 每个行业,在萌发后的一到两年,总会风起云涌,三到五年,总会一波三折,五年之后,总有人会峰回路转。Gartner用技术曲线描摹了这个规律。2019年大约是SaaS行业的分水岭。强者继续留在舞…