Python 对象比较与浅拷贝 深拷贝

is 比较两个变量的ID
== 比较两个变量的值

is 的操作效率,通常要优于 '=='。因为'is'操作符不能被重载,这样,Python 就不需要去寻找,程序中是否有其他地方重载了比较操作符,并去调用。执行比较操作符'is',就仅仅是比较两个变量的ID而已。
但是'==' 不同,执行 a == b,相当于是执行 a.eq(b),而Python大部分的数据类型都会去重载 eq 这个函数,其内部处理通常会复杂一些。比如,对于列表,eq函数会去遍历列表中的元素,比较他们的顺序和值是否相等。

浅拷贝:
是指重新分配一块内存,创建一个新的对象,里面的元素是原对象中子对象的引用。因此,如果原对象中的元素不可变,那就无所谓;但如果元素可变,浅拷贝通常会带来一些副作用。
深拷贝:
是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中,因此因对象和原对象没有任何关联。另外,深度拷贝中会维护一个字典,记录已经拷贝的对象及其ID,来提高效率并防止无线递归的发生。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容