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里的引用和拷贝相关推荐

  1. python中怎么赋值,python中的赋值操作

    参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作&qu ...

  2. python中什么是异常,python中异常处理,python异常处理,什么是异常?异常是一

    python中异常处理,python异常处理,什么是异常?异常是一 什么是异常? 异常是一个事件,该事件会在程序的执行中发生,影响程序的正常运行,一般情况下,在python无法正常处理程序时,就会发生 ...

  3. python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...

    在之前的编程语言里,学到for循环里面是可以重置变量i的值的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢? 在python中,for循环相当于一个迭代器(Iterator ...

  4. python中astype用法_python里的astype是什么意思?

    展开全部 astype是实现2113变量类型转换,例如 astype(type): returns a copy of the array converted to the specified typ ...

  5. python中幂运算_python里幂运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...

  6. python中文文档-Python语言、主要工具与类库中文文档

    Python是Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python 提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量 ...

  7. python中choicebox_学习python的第四天笔记

    26.032 异常处理 常用的异常警告语句: AssertionError:断言语句失败 AttributeError:访问的未知的对象属性,#例如f.dcp(),.dcp()是不存在的 IndexE ...

  8. python中if错误-Python中常见的异常处理

    异常和错误 part1:程序中难免出现错误,而错误分成两种 1. 语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def ...

  9. 2!=5 or 0在python中是否正确-python数据分析第二版:numpy

    一:Numpy #数组和列表的效率问题,谁优谁劣 #1.循环遍历 importnumpy as npimporttime my_arr= np.arange(1000000) my_list= lis ...

  10. python中if错误-python中的异常处理

    异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同 ...

最新文章

  1. rsyslog的配置文件使用方法
  2. 关于libStagefright系列漏洞分析
  3. Excel 自动根据Sheet名生成目录
  4. 新技术驱动新商业,网易创新企业大会亮点抢先看!
  5. 十分钟读懂『卡尔曼滤波算法』
  6. 使用代码创建ABAP transparent table
  7. 集成电路史上著名的十个人,有几个中国人?
  8. linux基础命令rpm,rpm常用命令集合1
  9. Tensorflow Object detection API 在 Windows10 配置
  10. Microsoft Visual Studio 无法启动程序“路径啪啦啪啦“. 系统找不到指定的文件。
  11. SpringCloud 入门教程(三): 配置自动刷新
  12. 和媳妇加一起月薪三万五想换车了不知道x5养的起吗?
  13. Windows Server2003搭建ssl通信
  14. 如何便捷获取参考文献的引用格式?
  15. 数据结构与算法之美-问题与思考收集
  16. webservice 传输加密
  17. 【文献翻译神器推荐】DeepL
  18. 深度学习从入门到精通——生成对抗网络原理
  19. html5怎么调用手机陀螺仪,html5 获取 陀螺仪,重力感应(转发)
  20. 【宝藏级构建桌面应用程序】使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序

热门文章

  1. Struts2是什么?
  2. [转]Memcache mutex设计模式
  3. webpack打包优化_提速MAX 京东通天塔WEBPACK构建发布优化实践
  4. android 本地 播放器,Android 本地播放器
  5. sql 相加_Java整数相加溢出怎么办?Java 8 还是厉害!
  6. linux c程序调用脚本,C程序与Lua脚本相互调用
  7. 高清设计素材|自然纸纹理,重构自然与生活的趣味
  8. 开环直流电机的机械特性_无刷直流电动机的开环调速机械特性研究
  9. 宇视科技android面试_宇视科技软件笔试面试
  10. halcon区域腐蚀膨胀算子_Halcon 形态学膨胀腐蚀应用举例