python深拷贝,浅拷贝,赋值引用

1.在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用

(1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

# -*- coding: utf-8 -*-if __name__ == '__main__':b = [1, 2, 3]a = bprint(a)print(b)a.append(4)print(a)print(b)

在这里插入图片描述
(2)copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

# -*- coding: utf-8 -*-
import copyif __name__ == '__main__':b = [1, 2, ["hello", "word"]]a = copy.copy(b)print(a)print(b)a.append(4)print(a)print(b)b[2].append("鸿蒙2.0")print(a)print(b)

运行结果:

"C:\Program Files\Python38\python.exe" E:/PythonSourceCode/test/main.py
[1, 2, ['hello', 'word']]
[1, 2, ['hello', 'word']]
[1, 2, ['hello', 'word'], 4]
[1, 2, ['hello', 'word']]
[1, 2, ['hello', 'word', '鸿蒙2.0'], 4]       这里数据变了
[1, 2, ['hello', 'word', '鸿蒙2.0']]

(3)深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

# -*- coding: utf-8 -*-
import copyif __name__ == '__main__':b = [1, 2, ["hello", "word"]]a = copy.deepcopy(b)print(a)print(b)b[2].append("鸿蒙2.0")print(a)print(b)

运行结果:

"C:\Program Files\Python38\python.exe" E:/PythonSourceCode/test/main.py
[1, 2, ['hello', 'word']]
[1, 2, ['hello', 'word']]
[1, 2, ['hello', 'word']]
[1, 2, ['hello', 'word', '鸿蒙2.0']]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pjtool用到的数据库----oracle范畴

PL/SQL Developer 专门面向Oracle数据库存储程序单元的开发 PL/SQL:过程化SQL语言转载于:https://www.cnblogs.com/ejllen/p/3684890.html

如何让mysql索引更快一点

后端开发,公众号内容包括但不限于 python、mysql、数据结构和算法、网络协议、Linux。技术人怎能只有技术和代码,如果你对投资理财、保险,英语学习、读书写作有兴趣,都欢迎来公众号【谭某人】与我交流,你总会有些收获。…

将本地项目上传到码云(gitee)远程仓库

前提条件: 1、本地电脑上已经安装了 git客户端,未安装的,具体安装过程可以参考此安装链接:https://blog.csdn.net/ezreal_tao/article/details/81609883 2、用户已经在gitee码云上注册完成 具体操作步骤: 1、登录码云…

单线程的Redis为什么却能支撑高并发?

作者:Draveness原文链接:draveness.me/redis-io-multiplexing最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净…

在Windows10上安装WSL使用binwalk命令

Windows 10 推出的WSL 功能可以协助我们直接使用binwalk 分析Windows 内的文件 一、WSL 准备 1、打开控制面板→应用→程序和功能→启动或关闭Windows 功能,打开“适用于Linux 的Windows 子系统”和“虚拟机平台”,随后需要重启。 2、打开Windows 10 自…

最详细的 IDEA调试教程

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。在Intellij IDEA中使用好Debug&…

centos 修改ip地址

为什么80%的码农都做不了架构师?>>> 查看IP地址 1 登陆连接centos系统,输入 ifconfig 可以查看到当前本机的IP地址信息,如下图 临时设置IP地址 1 如本机为例,上面查询IP为1.117,输入 ifconfig eth0 &…

经典面试题:如何保证缓存与数据库的双写一致性?

作者:你是我的海啸地址:http://t.cn/EK64FeP只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说&#x…

四、华为鸿蒙HarmonyOS应用开发之Java开发下Page Ability生命周期

系统管理或用户操作等行为均会引起Page实例在其生命周期的不同状态之间进行转换。Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放资源),这有助于提升应用的性能和稳健性。 Page生命周期回调 Page生命周期的不同状态转换及其对应的回…

jQuery.grep()

作用:grep()方法用于数组元素过滤筛选。语法:grep(array,callback,invert)。参数含义:array:带过滤数组。callback:数组过滤函数,该函数包含两个参数,第一个是当前数组元素的值 ,第二…

写简历的十大误区

作者:Coody地址:my.oschina.net/hooker/blog/3014656在互联网极速膨胀的社会背景下,各行各业涌入互联网的IT民工日益增大。早在2016年,我司发布了Java、Ios工程师的招聘信息,就Java工程师单个岗位而言,日收…

五、华为鸿蒙HarmonyOS应用开发之Java开发模式下的同一个 Page 里实现页面跳转时无参(有参)传递、回值详解

同一Page内导航 当发起导航的AbilitySlice和导航目标的AbilitySlice处于同一个Page时,您可以通过present()方法实现导航。如下代码片段展示通过点击按钮导航到其他AbilitySlice的方法: @Override protected void onStart(Intent intent) {...Button button = ...;button.<…

centos6.5安装mongodb2.6

下载地址&#xff1a;http://www.mongodb.org/downloads 解压命令&#xff1a;tar zxf mongodb-linux-i686-2.6.0.tgz 存放目录&#xff1a;/usr/local/mongodb 数据目录&#xff1a;/mongodb/data/ 日志文件&#xff1a;/mongodb/dblogs 没有具体的安装步骤&#xff0c;解压到…

<math.h> 头文件:C语言数学库函数

文章目录 概述基本算术运算sqrt()fabs()pow() 三角函数sin()cos() 对数函数log()log10() 指数函数exp() 其他函数ceil()floor() 结语 概述 math.h 是C语言标准库中的头文件&#xff0c;提供了许多与数学运算相关的函数。在本文中&#xff0c;我们将深入讨论一些 math.h 中常用…

面试官问你MySQL的优化,看这篇文章就够了

作者&#xff1a;zhangqhsegmentfault.com/a/1190000012155267一、EXPLAIN做MySQL优化&#xff0c;我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例&#xff0c;标注(1,2,3,4,5)我们要重点关注的数据type列&#xff0c;连接类型。一个好的sql语句至少要达到range级别。…

六、华为鸿蒙HarmonyOS应用开发之Java开发模式下的不同Page 间实现页面跳转

不同Page 间导航&#xff0c;实现页面跳转 AbilitySlice作为Page的内部单元&#xff0c;以Action的形式对外暴露&#xff0c;因此可以通过配置Intent的Action导航到目标AbilitySlice。Page间的导航可以使用startAbility()或startAbilityForResult()方法&#xff0c;获得返回结…

Android 网络编程

&#xff0c;在JAVA中进行网络通信&#xff0c;我们需要定义一个HttpPost对象&#xff0c;此对象需要输入url参数。然后定义一个List<NameValuePair>对象来以JSON的形式存储数据。接着通过HttpPost的getParams().setParameter()方法进行一些必要参数的设置&#xff0c;例…

不得不说--自动化测试元素定位与用例设计

关于自动化测试&#xff0c;经常被问到元素的定位 与 如何设计用例。 很多时间我也帮不了你解决实际的问题&#xff0c;只能从个人脚本谈谈如何看待这些问题。 不得不说之元素定位 虽然&#xff0c;本章写了十几篇文章来讲元素的定位与操作&#xff0c;对于碰到的一些常见功能&…

七、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Text组件和Button组件使用

一、Java UI框架概述 应用的Ability在屏幕上将显示一个用户界面,该界面用来显示所有可被用户查看和交互的内容。 应用中所有的用户界面元素都是由Component和ComponentContainer对象构成。Component是绘制在屏幕上的一个对象,用户能与之交互。ComponentContainer是一个用于…

MySQL 快速创建千万级测试数据

作者&#xff1a;IKNOW本尊链接&#xff1a;http://t.cn/E96Shud背景在进行查询操作的性能测试或者 sql 优化时&#xff0c;我们经常需要在线下环境构建大量的基础数据供我们测试&#xff0c;模拟线上的真实环境。总不能让我去线上去测试吧&#xff0c;会被DBA砍死的创建测试数…