Advertisement

copy与赋值的区别

阅读量:

copy()与deepcopy()之间的主要区别是python对数据的存储方式。

首先直接上结论:

深拷贝(deep copy),即是在创建一个完全独立的副本个体,并将所有层次的数据都重新生成的过程;该过程确保新副本与原有数据源之间没有任何关联关系,并且每个层次的数据都是全新的独立副本;因此,在这种情况下改变了原始数据源并不会影响到已经生成出来的独立副本个体;

等于赋予,并没有生成一个独立且自成一体的对象;它只是给原有的数据块加上了一个新的标记;因此,在任何一个标记发生变更时;数据块随之发生更改。

:浅复制要分两种情况进行讨论:

当 shallow copy操作的对象属于不可变类型(如 numeric types, string types, 和 tuples)时,在等同于赋值的情况下进行操作,则该对象与其原始 shallow copy将共享相同的 id标识符。

当shallow copy的值为mutable objects(列表和元组)时会result in the出现 of a 'not quite independent object'。其一是 shallow copy的对象本身被修改后 result in its内容也被相应修改;其二是 shallow copy的内容被修改不会result in原始对象的变化。

在这种情况下:复制的对象中没

全部评论 (0)

还没有任何评论哟~