python的深拷贝和浅拷贝

Python的深拷贝和浅拷贝,在面试的时候经常会被问到, 为了方便理解,利用Python 运行原理进行可视化分析的工具Python Tutor(http://www.pythontutor.com)进行一下分析

Python的拷贝,用自带的copy()函数,深拷贝在copy模块的deepcopy()

1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变 .

如图所示, 直接赋值, 因为是指向的同一个对象,当bb改变时, aa跟着改变.

2)copy浅拷贝,没有拷贝子对象,只是新建了一个对象,然后对象内部的元素和原对象的元素都是同样的。相互之间的修改可能会有影响.

如下图所示, 当子对象进行修改时, aa和bb的对应值都发生了改变, 当非子对象改变时,互不影响

3)深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

原文地址:https://www.cnblogs.com/yimiaoyikan/p/15425818.html