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 ...
随机推荐
- HDU 3697 Selecting courses 选课(贪心)
题意: 一个学生要选课,给出一系列课程的可选时间(按分钟计),在同一时刻只能选一门课程(精确的),每隔5分钟才能选一次课,也就是说,从你第一次开始选课起,每过5分钟,要么选课,要么不选,不能隔6分钟再 ...
- 如何在SAP Server Side JavaScript里消费destination
在SAP云平台里打开SAP HANA Web-Based Development Workbench进行服务器端JavaScript的开发. 创建一个新的package: 创建一个新的applicat ...
- POJ2112 Optimal Milking---二分+Floyd+网络流
题目链接: https://vjudge.net/problem/POJ-2112 题目大意: k个机器,每个机器最多服务m头牛. c头牛,每个牛需要1台机器来服务. 告诉你牛与机器每个之间的直接距离 ...
- 黑幕背后的Autorelease
http://blog.sunnyxx.com/2014/10/15/behind-autorelease/ 我是前言 Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[o ...
- 2018.5.21 . XMLSpy激活的方法
127.0.0.1 altova.com #XMLspy 127.0.0.1 www.altova.com #XMLspy 127.0.0.1 link.altova.com #XMLspy 追加加到 ...
- C# File和Directory类
File和Directory类 作为实用类,File和Directory类都提供了许多方法,用于处理文件系统以及其中的文件和目录.这些是静态方法,涉及移动文件.查询和更新属性并创建FileStream ...
- quartz调度
http://www.cnblogs.com/lzrabbit/archive/2012/04/14/2446942.html
- JS MarcoTasks MicroTasks
JS MarcoTasks MicroTasks 在JS的event loop中,有两种任务队列microtasks和macrotasks microtasks process.nextTick Pr ...
- package.json字段分析
分析1.必须在包的顶层目录下2.二进制文件应该在bin目录下3.javascipt在lib目录下4.文档在doc目录下 package.json字段分析 name:包的名称,必须是唯一的,由小写英文字 ...
- Qt之QThread随记
这是一篇随记,排版什么的就没有那么好了:) 首先要知道,一个线程在资源分配完之后是以某段代码为起点开始执行的,例如STL内的std::thread,POSIX下的pthread等,都是以函数加其参数之 ...