Python中复制,浅拷贝,深拷贝的区别详解
2018-03-25 16:26
381 查看
一、前言
Python对对象进行拷贝时有三种方式:复制、浅拷贝和深拷贝。三种复制的实现逻辑都各不相同,使用不同的拷贝方式,会产生不同的结果。区别好这三种方式,在编程的时候可以提高效率,降低错误率。二、复制
复制就是使用“=”。使用“=”的时候,实际上是传递的是对象的引用,当对象发生修改的时候,复制体也会发生同等的改变,无论何种改变。三、浅拷贝
浅拷贝,字面理解,就是只拷贝浅层的东西。他只会拷贝目标对象,目标的子对象(深层东西)不进行拷贝。当目标对象进行修改之后,复制体不会发生改变。[/u]
当目标对象的子对象(深层东西)发生修改之后,复制体会发生改变。[/u]
浅拷贝的使用方法:copy.copy(object)例如:import copy
a = [1,[2]]
print('目标对象原件:',a)
b = copy.copy(a)
a.append('3') #目标对象进行浅层改变
print('目标对象改变:',a)
print('复制体的结果:',b)
>>>
目标对象原件: [1, [2]]
目标对象改变: [1, [2], '3']
复制体的结果: [1, [2]]
import copy a = [1,[2]] print('目标对象原件:',a) b = copy.copy(a) a[1].append('3') #目标对象的子对象进行改变,即深层改变 print('目标对象改变:',a) print('复制体的结果:',b) >>> 目标对象原件: [1, [2]] 目标对象改变: [1, [2, '3']] 复制体的结果: [1, [2, '3']]
四、深拷贝
深拷贝,字面理解,就是深层次的拷贝。不仅拷贝了目标对象,也拷贝了目标对象的子对象。当无论对目标对象或者目标对象的子对象进行改变,复制体都不会改变!
深拷贝的使用方法:copy.deepcopy(object)例如:import copy
a = [1,[2]]
print('目标对象原件:',a)
b = copy.deepcopy(a)
a[1].append('3') #目标对象以及其子对象进行改变,即深层改变+浅层改变
a.append('3')
print('目标对象改变:',a)
print('复制体的结果:',b)
>>>
目标对象原件: [1, [2]]
目标对象改变: [1, [2, '3'], '3']
复制体的结果: [1, [2]]
相关文章推荐
- Python的复制,深拷贝和浅拷贝的区别
- python 赋值的时候是引用,如果需要复制则需要注意深拷贝和浅拷贝的区别
- 详解「复制、拷贝、替身、软连接、硬连接」区别
- python的复制,深拷贝和浅拷贝的区别
- 详解「复制、拷贝、替身、软连接、硬连接」区别
- Python中进程和线程的区别详解
- 详解python中的浅拷贝和深拷贝
- XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件
- python深复制与浅复制区别
- Python学习之"is" 与 "==" 的区别详解
- 对python requests的content和text方法的区别详解
- OC-内存管理:retain/copy(深、浅拷贝)的使用和区别详解
- Python关键字yield详解以及Iterable 和Iterator区别
- oc_对象的深拷贝与浅拷贝区别详解
- Python 深复制浅复制or深拷贝浅拷贝
- Python的shutil模块中文件的复制操作函数详解
- Python Cookbook 4.1 复制(拷贝)对象(浅复制和深复制)
- oc_对象的深拷贝与浅拷贝区别详解
- python中import reload __import__的区别详解
- 详解python2 和 python3的区别