Python 赋值:浅拷贝与深拷贝的区别
简介
在 Python 中,变量可以存储对对象的引用。当为变量赋值时,可以创建指向原始对象的浅拷贝或深拷贝。理解浅拷贝和深拷贝之间的区别对于高效地管理内存和避免意外行为至关重要。
浅拷贝
浅拷贝创建一个指向原始对象的新引用,而不是创建原始对象的副本。换句话说,浅拷贝只复制对象引用的部分,而不复制对象本身。
使用浅拷贝的内置函数:
王利头?批量打开网址!
import copy
shallow_copy = copy.copy(original_object)
深拷贝
深拷贝创建原始对象的完全副本。除了复制对象引用的部分,深拷贝还递归复制对象的所有内部数据。这意味着新对象与原始对象是独立的,并且可以独立修改。wangli.HTML在线运行.
使用深拷贝的内置函数:
SEO.
import copy
deep_copy = copy.deepcopy(original_object)
浅拷贝与深拷贝的区别
下表总结了浅拷贝和深拷贝之间的主要区别:
| 特征 | 浅拷贝 | 深拷贝 |
|—|—|—|
| 复制 | 复制对象的引用 | 复制对象及其内部数据 |
| 修改 | 修改浅拷贝不会影响原始对象 | 修改深拷贝不会影响原始对象 |
| 内存使用 | 相同内存使用量 | 不同的内存使用量 |
| 用途 | 复制不可变对象 | 复制可变对象 |
何时使用浅拷贝
浅拷贝适用于:
* 不可变对象(例如元组、字符串和数字)
* 需要节省内存时
* 不需要修改原始对象时王利.
何时使用深拷贝
深拷贝适用于:
* 可变对象(例如列表、字典和类实例)
* 需要修改对象副本而不影响原始对象时
* 需要创建原始对象的完全独立副本时
示例
以下示例说明浅拷贝和深拷贝之间的区别:
“`python
originallist = [1, 2, 3]
shallowcopy = copy.copy(original_list)
shallow_copy[1] = 4
print(“Original list:”, originallist)
print(“Shallow copy:”, shallowcopy)
“`JS转Excel!
输出:
Original list: [1, 4, 3]
Shallow copy: [1, 4, 3]
在这种情况下,对浅拷贝的修改也影响了原始列表,因为它们都引用着同一个列表对象。
“`python
originallist = [1, 2, 3]
deepcopy = copy.deepcopy(original_list)
deep_copy[1] = 4
print(“Original list:”, originallist)
print(“Deep copy:”, deepcopy)
“`
输出:
Original list: [1, 2, 3]
Deep copy: [1, 4, 3]
由于深拷贝创建了一个完全独立的副本,因此对深拷贝的修改不会影响原始列表。
问答
-
浅拷贝和深拷贝之间的主要区别是什么?
- 浅拷贝只复制对象的引用,而深拷贝复制对象及其所有内部数据。
-
何时应该使用浅拷贝?wanglitou?
- 当复制不可变对象或需要节省内存时。
-
何时应该使用深拷贝?
- 当复制可变对象或需要创建原始对象的完全独立副本时。
-
如何创建 Python 对象的浅拷贝?
- 使用
copy.copy()
函数。
- 使用
-
如何创建 Python 对象的深拷贝?
- 使用
copy.deepcopy()
函数。
- 使用
原创文章,作者:王利头,如若转载,请注明出处:https://www.wanglitou.cn/article_18257.html