0%

python——浅拷贝和深拷贝

​ 要了解深拷贝和浅拷贝,首先要明确python中的可变类型和不可变类型。

不可变数据类型

  • Number(数字)
  • String(字符串)
  • Tuple(元组)

可变数据类型

  • List(列表)
  • Dictionary(字典)
  • Set(集合)

深拷贝和浅拷贝

浅拷贝

​ 浅拷贝直接

1.对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。

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

3.浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。

深拷贝

1.除了顶层拷贝,还对子元素也进行了拷贝

2.经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了