copy & deepcopy
1 import copy 2 3 字典参照列表结论,看是否有深层嵌套。 4 a = {'name':1,'age':2} 5 b = a 6 a['name'] = 'ff' 7 print(a) 8 print(b) 9 print(id(a),id(b)) 10 11 12 a = {'name':1,'age':2} 13 b = copy.deepcopy(a) 14 a['name'] = 'ff' 15 print(a) 16 print(b) 17 print(id(a),id(b)) 18 """ 19 {'name': 'ff', 'age': 2} 20 {'name': 'ff', 'age': 2} 21 4301093048 4301093048 22 {'name': 'ff', 'age': 2} 23 {'name': 1, 'age': 2} 24 4301093120 4302783256 25 """ 26 27 字符串和元组等不可变数据类型,打死都不变 28 a = 'ff' 29 b = a 30 a = 'ff1' 31 print(a,b) # ff1 ff 32 33 a = 'ff' 34 b = copy.copy(a) 35 a = 'ff1' 36 print(a,b) # ff1 ff 37 38 a = 'ff' 39 b = copy.deepcopy(a) 40 a = 'ff1' 41 print(a,b) # ff1 ff 42 43 a = [1,2,3] 44 b = [4,5,6] 45 c = [a,b] 46 d = c 47 print(id(c),id(d)) # 4322641352 4322641352 48 c.append(9) 49 print(c) # [[1, 2, 3], [4, 5, 6], 9] 50 print(d) # [[1, 2, 3], [4, 5, 6], 9] 51 print(id(c),id(d)) # 4322641352 4322641352 52 53 d = copy.copy(c) 54 c.append(9) 55 print(c) # [[1, 2, 3], [4, 5, 6], 9] 56 print(d) # [[1, 2, 3], [4, 5, 6]] 57 c[0].append(8) 58 print(c) # [[1, 2, 3, 8], [4, 5, 6]] 59 print(d) # [[1, 2, 3, 8], [4, 5, 6]] 60 如果只是copy的话,copy.copy() 针对外层依旧是深拷贝,但对内层来讲就是浅拷贝了,会改变值。 61 62 63 d = copy.deepcopy(c) 64 c.append(9) 65 print(c) # [[1, 2, 3], [4, 5, 6], 9] 66 print(d) # [[1, 2, 3], [4, 5, 6]] 67 c[0].append(8) 68 print(c) # [[1, 2, 3, 8], [4, 5, 6]] 69 print(d) # [[1, 2, 3], [4, 5, 6]] 70 深拷贝, 不管你是啥,只要copy.deepcopy()了。 不管你变不变,我变我是狗。
copy & deepcopy的更多相关文章
- Python面试题之copy/deepcopy详解
copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...
- copy&deepcopy
import copy 字典参照列表结论,看是否有深层嵌套. a = {'name':1,'age':2} b = a a['name'] = 'ff' print(a) print(b) print ...
- copy.copy()与copy.deepcopy()的详解
copy.copy() 元组和列表调用这个方法效果也不一样. 元组的效果: a = [1,2,3] b = [4,5,6] c = (a,b) e = copy.copy(c) 可以看到:e和c是指向 ...
- Python 浅拷贝copy()与深拷贝copy.deepcopy()
首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要和 == ...
- python中的copy.copy和copy.deepcopy
一个例子就搞清楚 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 ...
- Python 函数参数引用(传值/传址)/copy/deepcopy
精简版: 传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组 ...
- Python 传值和传址 copy/deepcopy
传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组则传值:如 ...
- copy deepcopy辨析
copy deepcopy讲的是复制源对象的改变对copy出来的对象的影响: 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在. 所以改变原有被复制对象不会对已经复制 ...
- [Python] 等号赋值, copy, deepcopy的区别
参考链接: 1. 介绍python中的可变类型与不可变类型:https://blog.csdn.net/answer3lin/article/details/86430074 (也可以参考转载博客 P ...
随机推荐
- A011 Activiti工作流程开发的一些统一规则和实现原理(完整版)
注意:以下规则是我为了规范流程的处理过程,不是Activiti公司的官方规定. 1.流程启动需要设置启动者,在Demo程序中,“启动者变量”名统一设置为initUserId 启动时要做的: ident ...
- DBA的做法
防止有人删除数据库,创建一个触发器当数据库被删除是发送一份邮件给管理员并撤销这个命令. Create trigger [tridbsafe]ON ALL SERVERFOR DROP_DATABASE ...
- IOS enum(枚举)使用
typedef enum { MJMessageTypeMe=, MJMessageTypeOther }MJMessageType; /** *信息的类型 * */ @property (nonat ...
- JAVA设计模式初探之桥接模式
生活中的一个例子: 拿汽车在路上行驶的来说.既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶.这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也 ...
- 面向服务架构SOA
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型.它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来:接口是采用中 ...
- 2018.6.22 Java试题测试结果
如何从有数字规律的网址抓取网页并保存在当前目录?假设网址为 http://test/0.xml,其中这个数字可以递增到100. for((i=0;i<100;++i));do wget http ...
- flex在众多手机浏览器上的兼容方案(亲测华为手机自带浏览器)
如果项目使用构建工具,可加autoprefixer来处理,[autoprefixer使用指南] 纯手写css兼容代码,需给每个使用的属性加上属性前缀 /*display: flex;写法*/ span ...
- CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第三节
原文链接 第三节:错误处理和全局内存性能局限 恭喜!通过对CUDA(Compute Unified DeviceArchitecture,即计算统一设备架构的首字母缩写)系列文章第一节和第二节,您现在 ...
- AT2386 Colorful Hats (乱搞题,思维题)
分情况讨论的神题... max不等于min + 1 或者不等于min,这种情况显然不存在. 如果都等于一个数 有两种情况: 互相独立,那么a[i]肯定==n-1 有相同的,那么a[i]一定不是独立的. ...
- django+xadmin在线教育平台(三)
通过留言版功能回顾django基础知识 将对于django目录结构,使用Django快速搭建可以提交的表单页面,models.py , urls.py, views.py. 从数据库中取出数据展示到h ...