«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать по-настоящему независимые копии объектов в Python?

Как создать по-настоящему независимые копии объектов в Python?

Опубликовано 16 ноября 2024 г.
Просматривать:550

How to Create Truly Independent Copies of Objects in Python?

Дублирование объектов в Python: подробное руководство

Создание копий объектов — фундаментальная задача программирования на Python, особенно при работе со сложными данными структуры. В этой статье рассматриваются тонкости копирования объектов в Python, уделяя особое внимание созданию независимых объектов, на которые не влияют изменения, внесенные в оригинал.

Поверхностное и глубокое копирование

В Python существует два основных метода копирования объектов: поверхностное копирование и глубокое копирование. При поверхностном копировании создается новый объект, который ссылается на те же неизменяемые поля (например, целые числа, строки), что и исходный, но создает новые копии изменяемых полей (например, списки, словари).

Например, рассмотрим следующее фрагмент кода:

original_list = [1, 2, 3]
new_list = original_list[:]  # Shallow copy

Хотя new_list и original_list кажутся отдельными объектами, любые изменения, внесенные в один список, будут отражены в другом, поскольку они оба ссылаются на одни и те же базовые данные.

Создание полностью независимых объектов

Чтобы создать действительно независимые объекты, мы должны прибегнуть к глубокому копированию. Это предполагает создание новой копии каждого поля, включая вложенные изменяемые структуры. Функция Python copy.deepcopy() обеспечивает эту функциональность.

Давайте изменим наш предыдущий пример:

import copy

original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)

Теперь, если мы внесем изменение в new_list, это не повлияет на original_list:

new_list[2].append(6)
print(original_list)  # Output: [1, 2, [4, 5]]
print(new_list)       # Output: [1, 2, [4, 5, 6]]

Заключение

Используя функцию copy.deepcopy(), программисты может создавать полностью независимые копии объектов, гарантируя, что изменения, внесенные в один, не повлияют на другой. Понимание разницы между поверхностным и глубоким копированием имеет решающее значение для эффективного манипулирования объектами в Python.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3