Python深拷贝、浅拷贝详解
程序员文章站
2022-05-28 19:41:16
...
1. 浅拷贝
浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容
2. 深拷贝
深拷贝是对于一个对象所有层次的拷贝(递归)
3. 拷贝的其他方式
- 分片表达式可以赋值一个序列
- 字典的copy方法可以拷贝一个字典
4. 注意点
浅拷贝对不可变类型和可变类型的copy不同
copy.copy对于可变类型,会进行浅拷贝
copy.copy对于不可变类型,不会拷贝,仅仅是指向’
In [88]: a = [11,22,33]
In [89]: b = copy.copy(a)
In [90]: id(a)
Out[90]: 59275144
In [91]: id(b)
Out[91]: 59525600
In [92]: a.append(44)
In [93]: a
Out[93]: [11, 22, 33, 44]
In [94]: b
Out[94]: [11, 22, 33]
In [95]: a = (11,22,33)
In [96]: b = copy.copy(a)
In [97]: id(a)
Out[97]: 58890680
In [98]: id(b)
Out[98]: 58890680
copy.copy和copy.deepcopy的区别
copy.copy
copy.deepcopy
推荐阅读
-
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
-
javascript深拷贝、浅拷贝和循环引用深入理解
-
Python中浅拷贝和深拷贝的理解与研究
-
引用、浅拷贝及深拷贝 到 Map、Set(含对象assign、freeze方法、WeakMap、WeakSet及数组map、reduce等等方法)
-
python中的深拷贝与浅拷贝
-
用python实现的可以拷贝或剪切一个文件列表中的所有文件
-
什么是js深拷贝和浅拷贝及其实现方式
-
浅谈Python浅拷贝、深拷贝及引用机制
-
浅谈Java中实现深拷贝的两种方式—clone() & Serialized
-
Python基于sftp及rsa密匙实现远程拷贝文件的方法