深浅拷贝

在 Python 中 对象赋值实际上是对象的引用。当创建个对象 然后把它赋给另个变量的时候 Python 并没有拷贝这个对象 而只是拷贝了这个对象的引用 称之为浅拷贝。

在 Python 中 为了使当进行赋值操作时 两个变量互补影响 可以使用 copy 模块中的 deepcopy 方法 称之为深拷贝。

append() 函数

当 list 类型的对象进行 append 操作时 实际上追加的是该对象的引用。

id() 函数:返回对象的唯一标识 可以类比成该对象在内存中的地址。

>>>alist = []>>> num = [2]>>> alist.append( num )>>> id( num ) == id( alist[0] )True
如上例所示 当 num 发生变化时(前提是 id(num) 不发生变化) alist 的内容随之会发生变化。往往会带来意想不到的后果 想避免这种情况 可以采用深拷贝解决:
alist.append( copy.deepcopy( num ) )

原文地址:https://blog.csdn.net/u010099495/article/details/50276833