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()了。 不管你变不变,我变我是狗。

最新文章

  1. requirejs的基本学习
  2. linux下的符号链接和硬链接
  3. angular $apply()以及$digest()讲解1
  4. 20145102 《Java程序设计》第4周学习总结
  5. 选择排序的MPI实现
  6. Android_AsyncTask_Method
  7. POJ 2442 Sequence 优先队列
  8. C++关于编译器合成的默认构造函数
  9. IoC容器Autofac之IOC/DI基本概念(二)
  10. ios 添加多个target 管理 多个版本文件
  11. CodeForces 429B
  12. shell if条件判断中:双中括号与单中括号的区别
  13. Python if __name__ == '__main__':(以主程序形式执行)
  14. BarTender安装常见问题集结
  15. Windows Server 2012 R2 无法启用Microsoft .NET Framework 3.5 功能
  16. 哨兵/sentinel:在算法设计中的应用
  17. tf.contrib.rnn.static_rnn与tf.nn.dynamic_rnn区别
  18. 最大子数组之和(N)
  19. VS2010 / MFC + OpenCV 2.4.1打开图片
  20. Linux设置串口波特率等参数

热门文章

  1. ajax请求成功后js刷新当前页,当前页是post查询结果(用post请求进行搜索筛选)的问题
  2. COGS 11. 运输问题1
  3. 【洛谷4287】[SHOI2011] 双倍回文(Manacher算法经典题)
  4. 如何更改VirtualBox虚拟电脑内存大小
  5. kubernetes-存储卷(十二)
  6. PAT (Basic Level) Practise (中文)- 1002. 写出这个数 (20)
  7. Java发出声卡蜂鸣生的方法
  8. SpingBoot之配置文件的值注入问题
  9. linux下通过phpize为php在不重新编译php情况下安装模块memcache
  10. Q&A - ABTesting是啥?