一个类的浅拷贝和深拷贝的区别
浅复制: 浅重复更快。然而,它处理指针和引用是“懒惰的”。它不是创建指针指向的特定知识的当代副本,而是简单地复制指针价格。因此,每一个第一个副本和副本都可以有引用常量底层知识的指针。
深度复制: 深度重复真正克隆底层数据。它不会在第一个副本和第二个副本之间共享。
下面是浅拷贝和深拷贝之间的表格差异:
| 浅拷贝 | 深度复制 | | --- | --- | | 浅拷贝存储对象对原始内存地址的引用。 | 深度复制存储对象值的副本。 | | 浅复制反映了对原始对象中新的/复制的对象所做的更改。 | 深度复制不会反映对原始对象中的新/复制对象所做的更改。 | | 浅复制存储原始对象的副本,并将引用指向对象。 | 深度复制存储原始对象的副本,并递归复制对象。 | | 浅拷贝更快。 | 深度复制相对较慢。 |下面是讲解浅抄和深抄的程序。
Python 3
# Python3 implementation of the Deep
# copy and Shallow Copy
from copy import copy, deepcopy
# Class of Car
class Car:
def __init__(self, name, colors):
self.name = name
self.colors = colors
honda = Car("Honda", ["Red", "Blue"])
# Deepcopy of Honda
deepcopy_honda = deepcopy(honda)
deepcopy_honda.colors.append("Green")
print(deepcopy_honda.colors, \
honda.colors)
# Shallow Copy of Honda
copy_honda = copy(honda)
copy_honda.colors.append("Green")
print(copy_honda.colors, \
honda.colors)
Output:
['Red', 'Blue', 'Green'] ['Red', 'Blue']
['Red', 'Blue', 'Green'] ['Red', 'Blue', 'Green']
版权属于:月萌API www.moonapi.com,转载请注明出处