Копировать объект Python
- Используйте Shallow Copy для копирования объекта в Python
- Используйте Deep Copy для копирования объекта в Python

В Python операторы присваивания не могут копировать объекты, а просто создают новую переменную, которая имеет ссылку на исходный объект.
Копирование очень полезно в программировании и в основном требуется для редактирования кода одной копии без повреждения другой.
В этом руководстве будут рассмотрены различные методы копирования объекта в Python.
Используйте Shallow Copy для копирования объекта в Python
Для использования операции неглубокого копирования необходимо импортировать модуль copy
. Модуль copy
предоставляет программистам возможность использовать общие операции глубокого и поверхностного копирования.
Неглубокая копия в основном создает новый собирающий объект, в котором хранятся ссылки на дочерние объекты, найденные в исходных элементах. Этот процесс не является рекурсивным и, следовательно, не создает копий дочерних объектов.
Когда происходит неглубокая операция копирования, ссылка копируется на новый объект. Это означает, что если в копию объекта внесены какие-либо изменения, эти изменения также отразятся на исходном объекте.
Следующий код использует операцию Мелкое копирование
для копирования объекта в Python.
import copy
# the original list
ol = [2, 4, [1,8], 6, 8]
# using copy to shallow copy
nl = copy.copy(ol)
print ("Original list before shallow copy")
for x in range(0,len(ol)):
print (ol[x],end=" ")
print("\r")
# modfying the new list
nl[2][0] = 9
print ("Original list after shallow copy")
for x in range(0,len(ol)):
print (ol[x],end=" ")
Выход:
Original list before shallow copy
2 4 [1, 8] 6 8
Original list after shallow copy
2 4 [9, 8] 6 8
Как упоминалось ранее, в этой операции не создаются копии дочернего процесса. Следовательно, можно сказать, что неглубокая копия не полностью самодостаточна и зависит от исходного объекта.
Используйте Deep Copy для копирования объекта в Python
Нам нужно импортировать модуль copy
в код Python, чтобы использовать как глубокую, так и неглубокую операции копирования.
В операции глубокого копирования процесс копирования всегда происходит рекурсивно. Операция глубокого копирования сначала создает новый собирающий объект, а затем добавляет копии дочерних объектов, найденных в исходных элементах.
По сути, в процессе глубокой копии
копия исходного объекта передается новому собирающему объекту. Следовательно, если в копию объекта внесены какие-либо изменения, эти изменения не отразятся на исходном объекте. Для реализации этой операции глубокого копирования мы используем функцию deepcopy()
.
Следующий код использует функцию deepcopy()
для реализации операции глубокого копирования в Python.
import copy
# original list
ol = [2, 4, [1,8], 6, 8]
# use deepcopy() to deep copy
nl = copy.deepcopy(ol)
# original elements of list
print ("Original list before deep copying")
for x in range(0,len(ol)):
print (ol[x],end=" ")
print("\r")
# adding and element to new list
nl[2][0] = 9
# The second list after changes
print ("The new list after modifications ")
for x in range(0,len( ol)):
print (nl[x],end=" ")
print("\r")
print ("Original list after deep copying")
for x in range(0,len( ol)):
print (ol[x],end=" ")
Выход:
Original list before deep copying
2 4 [1, 8] 6 8
The new list after modifications
2 4 [9, 8] 6 8
Original list after deep copying
2 4 [1, 8] 6 8
Как указано в приведенных выше предложениях, глубокая копия может рекурсивно клонировать дочерние объекты, что означает, что она самодостаточна и не зависит от исходного объекта.
Единственным недостатком создания операции глубокого копирования является то, что она сравнительно медленнее и требует больше времени для выполнения, чем операция поверхностного копирования.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn