Python的深浅拷贝,要注意数据类型呀,不要全用浅拷贝

可变数据与不可变数据的深浅拷贝

总结:当内层为可变数据类型时,深拷贝后内层外层地址均发生改变。当内层为不可变数据类型时,外层不管是可变还是不可变数据类型,使用深拷贝,都不会改变内层地址,只会在外层为可变数据类型时,改变外层地址。
参考链接:http://t.csdn.cn/LLtig

浅拷贝

当数据内外层是可变数据类型:列表、字典等,当只有一层数据,通过浅拷贝地址发生改变;当有内外层数据,通过浅拷贝,内层地址不改变,外层地址发生改变。
当数据内外层类型是不可变数据类型:字符串、元组等,当只有一层数据,通过浅拷贝地址不发生改变;当有内外层数据,通过浅拷贝,内外层地址都不发生改变。
Python的深浅拷贝,要注意数据类型呀,不要全用浅拷贝_第1张图片

如上图是浅拷贝,外层数据内存地址改变,但是内层数据内存地址未改变,所以改变matix_new内层数据的值,matix对应内层数据也会变化。

深拷贝

当数据内外层是可变数据类型:列表、字典等,通过深拷贝内外层地址均发生变化。
当数据类型内外层是不可变数据类型:字符串、元组等,当只有一层数据,通过深拷贝地址不发生改变;当有内外层数据,通过深拷贝,内层地址不改变,外层地址发生改变。
Python的深浅拷贝,要注意数据类型呀,不要全用浅拷贝_第2张图片
如上图是神拷贝,外层数据内存地址改变,但是内层数据内存地址也改变,所以改变matix_new内层数据的值,matix对应内层数据不会变化。

你可能感兴趣的:(python,python)