python中copy模块 copy()浅拷贝和deepcopy()深拷贝的区别
2018-04-02 11:27
344 查看
关于python中copy模块,它只有两个方法,copy()浅拷贝和deepcopy()深拷贝
他们通常用于对对象的复制操作,注意,浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用,所以两者就是一样的结果了。
我们要了解一下直接赋值 ,浅拷贝 和深拷贝的区别
直接赋值:
简单地拷贝对象的引用,两个对象的id相同。就是对象的引用(别名),就是给当前内存中的对象增加一个“标签”而已。通过使用内置函数 id() ,可以看出指向内存中同一个对象。
浅拷贝:
copy模块的copy方法, 拷贝父对象,不会拷贝对象的内部的子对象。即浅复制只复制对象本身,没有复制该对象所引用的对象。
深拷贝:
copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。即创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。
他们通常用于对对象的复制操作,注意,浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用,所以两者就是一样的结果了。
我们要了解一下直接赋值 ,浅拷贝 和深拷贝的区别
直接赋值:
简单地拷贝对象的引用,两个对象的id相同。就是对象的引用(别名),就是给当前内存中的对象增加一个“标签”而已。通过使用内置函数 id() ,可以看出指向内存中同一个对象。
浅拷贝:
copy模块的copy方法, 拷贝父对象,不会拷贝对象的内部的子对象。即浅复制只复制对象本身,没有复制该对象所引用的对象。
深拷贝:
copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。即创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。
相关文章推荐
- Python copy()与deepcopy()区别,深拷贝与浅拷贝
- Python里的拷贝【引用和copy(),deepcopy()的区别】
- Python拷贝对象(浅拷贝copy与深拷贝deepcopy)
- Python-copy()与deepcopy()区别
- python的深拷贝deepcopy与浅拷贝copy
- Python-copy()与deepcopy()区别
- Python3 copy(深和浅拷贝的区别)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- python3中浅拷贝与深拷贝的实现方式、区别
- Python 赋值、浅拷贝、深拷贝的区别?
- Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python中浅拷贝和深拷贝的区别
- Python字典方法copy()和deepcopy()的区别
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- 图解python中赋值、浅拷贝、深拷贝的区别
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝)
- python中文件的遍历、拷贝以及几个版本的小区别