python中的引用,Python里的引用和拷贝
immutable 对象赋值时创建copy
mutable对象赋值时创建引用
有两种对mutable对象的copy操作:
shadow copy:原始对象里的mutable对象copy的是引用,用[:], dict.copy, copy.copy
deep copy:递归copy整个对象,用copy.deepcopy
>>> a=[[1,2,3], [4,5,6]]
>>> import copy
>>> b=copy.copy(a) #浅copy
>>> b
[[1, 2, 3], [4, 5, 6]]
>>> a[0][0]='a' #对a进行修改
>>> a
[['a', 2, 3], [4, 5, 6]] #a发生了变化
>>> b
[['a', 2, 3], [4, 5, 6]] #b也发生了变化
>>> a=[[1,2,3], [4,5,6]]
>>> b=copy.deepcopy(a) #深copy
>>> a
[[1, 2, 3], [4, 5, 6]]
>>> b
[[1, 2, 3], [4, 5, 6]]
>>> a[0][0]='a'
>>> a
[['a', 2, 3], [4, 5, 6]]
>>> b
[[1, 2, 3], [4, 5, 6]] #b没变
浅copy会先成一个新的对象,然后把原对象的属性值添加到新的对象中。但原对象
的属性值很可能又是对象,这样,就是一种递归的概念了。象上面的测试就是列表
中的每个元素又是列表。但浅拷贝对于属性值不再判断它是否为一个特殊对象,只
是把属性值的引用简单地追加到新对象中。因此在第一个测试中,使用浅拷贝虽然
生成了一个新的对象,但它的属性(即每个子元素为列表)仍然会为原来的子元
素。这样由于子列表在新旧列表对象都是一样的,因此对原列表中子列表的改变就
影响了新列表的属性值。
深copy会对每个属性执行递归操作,以保证所有属性全部为新的对象,而不只是原
对象引用的拷贝。
这是对于象列表这种可变对象才会出现的情况,对于不可变对象则没有关系。
python中的引用,Python里的引用和拷贝相关推荐
- python中怎么赋值,python中的赋值操作
参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作&qu ...
- python中什么是异常,python中异常处理,python异常处理,什么是异常?异常是一
python中异常处理,python异常处理,什么是异常?异常是一 什么是异常? 异常是一个事件,该事件会在程序的执行中发生,影响程序的正常运行,一般情况下,在python无法正常处理程序时,就会发生 ...
- python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...
在之前的编程语言里,学到for循环里面是可以重置变量i的值的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢? 在python中,for循环相当于一个迭代器(Iterator ...
- python中astype用法_python里的astype是什么意思?
展开全部 astype是实现2113变量类型转换,例如 astype(type): returns a copy of the array converted to the specified typ ...
- python中幂运算_python里幂运算
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...
- python中文文档-Python语言、主要工具与类库中文文档
Python是Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python 提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量 ...
- python中choicebox_学习python的第四天笔记
26.032 异常处理 常用的异常警告语句: AssertionError:断言语句失败 AttributeError:访问的未知的对象属性,#例如f.dcp(),.dcp()是不存在的 IndexE ...
- python中if错误-Python中常见的异常处理
异常和错误 part1:程序中难免出现错误,而错误分成两种 1. 语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def ...
- 2!=5 or 0在python中是否正确-python数据分析第二版:numpy
一:Numpy #数组和列表的效率问题,谁优谁劣 #1.循环遍历 importnumpy as npimporttime my_arr= np.arange(1000000) my_list= lis ...
- python中if错误-python中的异常处理
异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同 ...
最新文章
- rsyslog的配置文件使用方法
- 关于libStagefright系列漏洞分析
- Excel 自动根据Sheet名生成目录
- 新技术驱动新商业,网易创新企业大会亮点抢先看!
- 十分钟读懂『卡尔曼滤波算法』
- 使用代码创建ABAP transparent table
- 集成电路史上著名的十个人,有几个中国人?
- linux基础命令rpm,rpm常用命令集合1
- Tensorflow Object detection API 在 Windows10 配置
- Microsoft Visual Studio 无法启动程序“路径啪啦啪啦“. 系统找不到指定的文件。
- SpringCloud 入门教程(三): 配置自动刷新
- 和媳妇加一起月薪三万五想换车了不知道x5养的起吗?
- Windows Server2003搭建ssl通信
- 如何便捷获取参考文献的引用格式?
- 数据结构与算法之美-问题与思考收集
- webservice 传输加密
- 【文献翻译神器推荐】DeepL
- 深度学习从入门到精通——生成对抗网络原理
- html5怎么调用手机陀螺仪,html5 获取 陀螺仪,重力感应(转发)
- 【宝藏级构建桌面应用程序】使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序
热门文章
- Struts2是什么?
- [转]Memcache mutex设计模式
- webpack打包优化_提速MAX 京东通天塔WEBPACK构建发布优化实践
- android 本地 播放器,Android 本地播放器
- sql 相加_Java整数相加溢出怎么办?Java 8 还是厉害!
- linux c程序调用脚本,C程序与Lua脚本相互调用
- 高清设计素材|自然纸纹理,重构自然与生活的趣味
- 开环直流电机的机械特性_无刷直流电动机的开环调速机械特性研究
- 宇视科技android面试_宇视科技软件笔试面试
- halcon区域腐蚀膨胀算子_Halcon 形态学膨胀腐蚀应用举例