python中可变类型和不可变类型数据的复制

常见的复制方式有以下5种
第1种:通过等号[=]复制 - 不论可变还是不可变数据类型,通过[=]复制后都指向同一个内存地址; - 改变复制后的数据(例子中的anotherStr,anotherList),原数据中不可变数据模型值未改变,可变数据模型值改变 - 第2种:通过工厂方法复制 - 不可变数据模型复制后指向同一个内存地址,可变数据模型指向不同地址; - 改变复制后的数据,原数据中不可变数据模型值未改变,可变数据模型值改变 - 第3种:通过[:](值传递)复制 - 不可变数据模型不涉及;可变数据模型指向不同内存地址; - 改变复制后的数据),原数据中不可变数据模型值未改变,可变数据模型值改变 - 第4种:通过浅拷贝(copy)方法复制 - 不可变数据模型复制后指向同一个内存地址,可变数据模型指向不同地址; - 改变复制后的数据,原数据中不可变数据模型值未改变,可变数据模型值改变 - 第5种:通过深拷贝(deepcopy)方法复制 - 不可变数据模型复制后指向同一个内存地址,可变数据模型指向不同地址; - 改变复制后的数据,原数据中不可变、可变数据模型值均未改变



总而言之 
对于不可变数据模型,不论通过什么办法复制,通过改变复制后的数据,均不会改变原数据的值 对于可变数据模型,除深拷贝不会改变原数据值,其他均会改变原数据值
posted @ 2019-06-17 10:33  seagull-yang  阅读(269)  评论(0编辑  收藏  举报