Python中浅复制和深复制的一点理解
来源:互联网 发布:淘宝内衣女模特叫名字 编辑:程序博客网 时间:2024/05/17 08:03
最近由于公选课的原因在学习Python。最初接触Python的时候,感受最深刻的就是这个语言的强大,不需要声明数据类型,自动转换,以及强大的库,最后也就理解了为什么有些程序员感慨Python一行程序可以解决C++、Java几十行代码才能解决的问题。但是,强大的语言只能让我们在实际使用的时候更加便捷,而要想真正的用好这个工具,我觉得还是要清楚其背后的运行机制!今天在学习Python的字典的时候遇到了copy函数和deepcopy这两个函数,然后就涉及到了相互赋值的问题!开始的时候我恨不能理解浅复制的含义,去百度上查找相关的资料发现都很抽象,然后就自己思考了一下,结合相关的说法,找到了一中很符合的解释。Python中一切皆为对象,那么所有的数据类型就都有可能被引用。在Python中,类似于 a=b这种赋值其实并不是真正地将b的值付给了a,而是将b所指向的地址给了a,换而言之,a和b实际上指向的是同一个内存单元,所以只要b的值改变,a的值也会随之改变。我刚开始的时候打算去验证一下子,所以将a的值改变,发现b的值并不变,这是因为改变a的值,势必要赋值给a,例如a= 1,但是Python中任何东西都是对象,所以这就相当于把一个新的对象赋给了a,那么自然a和b就不一样了。其实,这个问题很好验证,只需要打印出a和b的地址就会发现a和b是指向同一个地址的!有了上面的铺垫,那么在字典中的copy和deepcopy就不难理解了,在自己实验的时候我发现只有当字典中有列表这种引用类型的时候,改变列表的值,才会改变浅复制之后的变量,按照之前的理解,copy并不是真的copy了列表,而是类似于上述的a=b的赋值一样,当我们试图去改变b的时候,a自然会随之改变。当然,这只是我自己的理解,我现在还只是处在初学阶段,所以这只是我个人的一种理解,并不能确保一定正确!
阅读全文
0 0
- Python中浅复制和深复制的一点理解
- Python中"=“,浅复制和深复制的理解
- python的深复制和浅复制
- 『python思考』关于列表的浅复制和深复制的理解
- 对C++中深复制与浅复制的理解
- Java深复制和浅复制的理解
- 关于浅复制和深复制的理解
- python 里的深复制 和浅复制概念
- python 深复制和浅复制
- Python List 深复制和浅复制
- 深复制与浅复制的理解
- Java中Clone方法的浅复制和深复制
- C#中List的浅复制和深复制
- Java中浅复制和深复制
- Java中深复制和浅复制
- js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
- python复制,浅拷贝,深拷贝理解
- 数组的浅复制和深复制
- mysql执行计划看必会(explain讲解)
- mysql gtid模式主从复制搭建
- 哈尔滨理工大学第七届程序设计竞赛决赛(现场赛-高年级组) A-所有情况的和
- ubuntu 16.04下中文输入法的安装
- mybatis 加载顺序
- Python中浅复制和深复制的一点理解
- 用C++来解决3*3拼图
- 卷积神经网络算法的一个实现
- mysql数据库建立索引
- 执行su -s /bin/sh -c "keystone-manage db_sync" keystone同步后,查看keystone表为空
- 多元线性回归(下)
- GLSL基础
- 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
- 三年工作经验——感悟