当前位置:Gxlcms > Python > python中深浅拷贝的简单讲解(附代码)

python中深浅拷贝的简单讲解(附代码)

时间:2021-07-01 10:21:17 帮助过:58人阅读

本篇文章给大家带来的内容是关于python中深浅拷贝的简单讲解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

复习一下,深浅拷贝。

上代码:

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Sep 20 14:18:48 2018
  4. @author: Lenovo
  5. """
  6. import copy,json
  7. a={"ab":1,"cd":{"ef":2},"gh":[1,2,3]}
  8. print "a1:",a
  9. b=dict(a["cd"])
  10. c=copy.copy(a)
  11. d=copy.deepcopy(a)
  12. e=a["cd"]
  13. a["cd"]["xy"]=3
  14. a["fx"]=5
  15. a["cd"]["ef"]=20
  16. print "a2:",a
  17. print "b :",b
  18. print "c :",c
  19. print "d :",d
  20. print "e :",e

结果:

  1. a1: {'gh': [1, 2, 3], 'ab': 1, 'cd': {'ef': 2}}
  2. a2: {'gh': [1, 2, 3], 'fx': 5, 'ab': 1, 'cd': {'xy': 3, 'ef': 20}}
  3. b : {'ef': 2}
  4. c : {'cd': {'xy': 3, 'ef': 20}, 'ab': 1, 'gh': [1, 2, 3]}
  5. d : {'cd': {'ef': 2}, 'ab': 1, 'gh': [1, 2, 3]}
  6. e : {'xy': 3, 'ef': 20}

从结果可以看出:

dict()命令创建了一个新的字典;

"="赋值 相当于使用了“引用”概念;

copy.copy是浅拷贝,对拷贝的信息进行修改则会相应修改,新增或对其他未拷贝的信息修改,浅拷贝对象是不会有修改;

例如c拷贝的范围是"gh","ab","cd"三个key,若对这三个key的value修改,拷贝后对象会相应修改,但是对其他信息修改,如增加key"fx",拷贝后的对象不会修改。

copy.deepcopy是深拷贝,创建全新的对象。

以上就是python中深浅拷贝的简单讲解(附代码)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行