52.深拷贝浅拷贝

可变类型:列表[],字典{}
不可变类型:数字,元组(),字符串

  • copy只是拷贝表层的出来(新生成的空间任然指向原来的数据),id与原来不一样了,但是修改原来的数据,新拷贝出来的仍然会变,如果拷贝之后再变,打印出来的东西还是原来拷贝的。

注意:copy.copy()拷贝的是元组,那么他不会进行浅拷贝,仅仅是指向,原因:因为元组是不可变类型,那么以为着数据一定不能修改,因此用copy.copy()的时候它会自动判断,如果是元组它就就是指向了它

  • deepcopy是拷贝出另外一份数据存着(新生成的空间直接把数据复制过来了,不指向原来的数据),id与原来不一样,但是修改原来的数据与新拷贝出来的无关(如果是不可变数据,例如元组,那么拷出来id还是一样,但是不可变数据里面有可变数据,那么拷出来的id会变)
  1. 如果用 copy.copy、copy.deepcopy 对一个全部都是不可变类型的数据进行拷贝,那么他们的结果相同,都是引用指向
  2. 如果拷贝的是一个拥有不可变类型的数据,即使元组是最顶层,那么deepcopy依然是深拷贝,而copy.copy还是指向

转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至gxnucgb@qq.com

文章标题:52.深拷贝浅拷贝

文章字数:361

本文作者:陈桂彬

发布时间:2019-08-20, 12:11:03

最后更新:2019-08-20, 14:58:29

原始链接:https://github.com/gxnucgb/gxnucgb.github.io/2019/08/20/52-深拷贝浅拷贝/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github