参考
区别
直接赋值:其实就是对象的引用(别名)。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy):copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
补充:可变对象、不可变对象 【可变对象】:当有需要改变对象内部的值的时候,这个对象的id不发生变化。 【不可变对象】:当有需要改变对象内部的值的时候,这个对象的id会发生变化。 P.S:可变对象(dict/list/set)、不可变对象(int/str/float/tuple)。
对不可变对象进行复制、浅/深拷贝
对不可变对象,复制/浅拷贝/深拷贝都是引用原对象的内存地址。对于不可变对象,如果原对象发生什么变化,复制/浅拷贝/深拷贝都不会跟着变
对可变对象进行复制、浅/深拷贝
复制:原对象怎么变,我跟着变浅拷贝:原对象的外层元素地址变化,内层元素的地址不变。深拷贝:原对象的外层/内层元素地址都变化 综上所述,复制相当于是无论什么条件都愿意跟着你结婚的好女孩;浅拷贝相当于有机会回到你身边的前女友,但要看你表现;深拷贝是完全对你死心的前女友。(和面试官可别这么说哈!)