python中的浅拷贝与深拷贝

1.python中的数据类型分为两种:

  不可变数据类型:数值number,字符串String,元组tuple

  可变数据类型:字典dic,列表list,集合set

2.定义

  深拷贝:拷贝的程度深,开辟了一块新的内存,将被拷贝的内容全部拷贝过来,放到这块新的内存中

  浅拷贝:拷贝的程度钱,只拷贝原数据的首地址,通过原数据的首地址,去获取内容

两者的优缺点对比:
(1)深拷贝拷贝程度高,将原数据复制到新的内存空间中。改变拷贝后的内容不影响原数据内容。但是深拷贝耗时长,且占用内存空间。
(2)浅拷贝拷贝程度低,只复制原数据的地址。其实是将副本的地址指向原数据地址。修改副本内容,是通过当前地址指向原数据地址,去修改。所以修改副本内容会影响到原数据内容。但是浅拷贝耗时短,占用内存空间少。

浅拷贝注意事项:

  改变原始对象中为可变类型的元素的值,会同时影响拷贝对象。
  改变原始对象中为不可变类型的元素的值,不会响拷贝对象。

深拷贝注意事项:

  深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。
  经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。

代码实例:

 

 

 

 通过代码可以看出,对于浅拷贝,当我们向原数据中的可变数据类型之一的列表追加一个元素,原数据和浅拷贝之后的数据都发生了变化,反而对于不可变数据类型,浅拷贝之后没有发生变化!

posted @ 2022-08-28 17:37  99号的格调  阅读(135)  评论(0编辑  收藏  举报