总结:当内层为可变数据类型时,深拷贝后内层外层地址均发生改变。当内层为不可变数据类型时,外层不管是可变还是不可变数据类型,使用深拷贝,都不会改变内层地址,只会在外层为可变数据类型时,改变外层地址。
参考链接:http://t.csdn.cn/LLtig
当数据内外层是可变数据类型:列表、字典等,当只有一层数据,通过浅拷贝地址发生改变;当有内外层数据,通过浅拷贝,内层地址不改变,外层地址发生改变。
当数据内外层类型是不可变数据类型:字符串、元组等,当只有一层数据,通过浅拷贝地址不发生改变;当有内外层数据,通过浅拷贝,内外层地址都不发生改变。
如上图是浅拷贝,外层数据内存地址改变,但是内层数据内存地址未改变,所以改变matix_new内层数据的值,matix对应内层数据也会变化。
当数据内外层是可变数据类型:列表、字典等,通过深拷贝内外层地址均发生变化。
当数据类型内外层是不可变数据类型:字符串、元组等,当只有一层数据,通过深拷贝地址不发生改变;当有内外层数据,通过深拷贝,内层地址不改变,外层地址发生改变。
如上图是神拷贝,外层数据内存地址改变,但是内层数据内存地址也改变,所以改变matix_new内层数据的值,matix对应内层数据不会变化。