dict中的“深拷贝”和“浅拷贝”
2016-03-03 11:26
260 查看
先看代码段
深拷贝和浅拷贝的内存地址都和d的原地址不一样,但是浅拷贝会根据原d的变化而变化,但深拷贝不会发生任何变化
>>> from copy import deepcopy >>> d = {} >>> d['name'] = ['wang','zhang'] >>> d {'name': ['wang', 'zhang']} >>> c = d.copy() >>> dc = deepcopy(d) >>> id(d),id(c),id(dc) (139877719597136, 139877719598816, 139877719599936) >>> b = d >>> id(d),id(c),id(dc),id(b) (139877719597136, 139877719598816, 139877719599936, 139877719597136) >>> d('name1').append('chen') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'dict' object is not callable >>> d('name').append('chen') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'dict' object is not callable >>> d['name1'].append('chen') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name1' >>> d['name'].append('chen') >>> d {'name': ['wang', 'zhang', 'chen']} >>> c {'name': ['wang', 'zhang', 'chen']} >>> dc {'name': ['wang', 'zhang']} >>> b {'name': ['wang', 'zhang', 'chen']} >>> id(d),id(c),id(dc),id(b) (139877719597136, 139877719598816, 139877719599936, 139877719597136) >>>
深拷贝和浅拷贝的内存地址都和d的原地址不一样,但是浅拷贝会根据原d的变化而变化,但深拷贝不会发生任何变化
相关文章推荐
- Swift2.0(13)构造方法
- 虚函数 纯虚函数 抽象类
- 设计模式(7)——适配器模式(Adapter Pattern)
- 设计模式(6)——原型模式(Prototype Pattern)
- 使用poi来解析Excel的xls和xlsx
- 关于活动总结
- 81.You are currently located in Singapore and have connected to a remote database in Chicago.
- fastlane 使用中遇到的问题
- 如何使上层的div遮住的链接可以点击
- Android <shape />的使用
- TCP/IP、Http、Socket的区别
- 常用SQL语句汇总
- python读取mnist
- ThingWorx : 3、为Thing添加valueStream(web显示曲线做准备)
- iOS开发--根据label内容动态设定label大小
- 第一行代码-13.3 定制自己的日志工具
- 设计模式(5)——建造者模式(Builder Pattern)
- 设计模式(4)——抽象工厂模式
- JNI————C中调用JAVA方法错误和注意的地方
- React-DOM操作详解