python中的深浅拷贝

    不可变类型:数字,字符串,元组
    可变类型:列表,字典,集合。

python为这种需求提供了copy模块。提供了两种主要的copy方法,一种是普通的copy,另一种是deepcopy。我们称前者是浅拷贝,后者为深拷贝。

 

  是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容

1.浅拷贝

通过a=b这种方式赋值只是赋值的引用(内存地址),a和b都指向了同一个内存空间,所以他们的id(地址相同),这种就是浅拷贝

copy模块里面的copy方法实现

 

1、对于 不可 变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
2、对于 可 变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝

3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。(操作拷贝对象对原始对象的也是同理)

2.深拷贝

copy模块里面的deepcopy方法实现

1、浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝)
2、经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了


————————————————

原文链接:https://blog.csdn.net/weixin_44800244/article/details/88909057

posted @ 2020-03-12 12:03  my_Sunday  阅读(227)  评论(0编辑  收藏  举报