mom.exe是什么进程,速度季,制霸中场txt下载
python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。
1、copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2、copy.deepcopy 深拷贝 拷贝对象及其子对象
这篇博客主要通过代码说明一下对象赋值、浅拷贝和深拷贝三者的区别。
首先区分一下可变对象和不可变对象:
应用范围:
对象赋值:
will = ["train", 28, ["file", "edit", "view"]] wilber = will print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) will[0] = "test" will[2].append("navigate") print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber])
执行代码,结果为:
下面来分析一下这段代码:
浅拷贝:
import copy will = ["train", 28, ["file", "edit", "view"]] wilber = copy.copy(will) print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) will[0] = "test" will[2].append("navigate") print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber])
执行代码,结果为:
下面来分析一下这段代码:
当我们使用下面的操作的时候,会产生浅拷贝的效果:
深拷贝:
import copy will = ["train", 28, ["file", "edit", "view"]] wilber = copy.deepcopy(will) print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) will[0] = "test" will[2].append("navigate") print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber])
执行代码,结果为:
下面来分析一下这段代码:
拷贝的特殊情况:
import copy will = ('file', 'edit', 'view') wilber = copy.deepcopy(will) print(will is wilber) will = ('file', 'edit', 'view', []) wilber = copy.deepcopy(will) print(will is wilber)
总结:
参考资料:
https://www.cnblogs.com/richardzhu/p/4723750.html
http://www.cnblogs.com/wilber2013/p/4645353.html
https://blog.csdn.net/u014745194/article/details/70271868
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论