在python中,无论是直接的变量赋值,还是参数传递,都是按照引用进行赋值的,所以在日常开发过程中,我们经常需要用到对象拷贝功能。
copy模块则提供了浅拷贝和深拷贝功能。
- 浅拷贝:obj.copy()
- 深拷贝:obj.deepcopy()
浅拷贝
浅拷贝:只拷贝第一层的数据
1 | # encoding=utf-8 |
输出结果:
1 | DEBUG - {'phone': {'home': '456789'}, 'name': 'myname'} |
因为浅拷贝只拷贝了第一层数据,其他层级数据还是引用原始对象的,所以改变原始对象的数据,浅拷贝的对象非第一层数据也会发生变化。
深拷贝
深拷贝:递归拷贝没一层的数据
1 | # encoding=utf-8 |
输出结果:
1 | DEBUG - {'phone': {'home': '123456'}, 'name': 'myname'} |
可以看出,深拷贝之后的对象和原对象完全独立。