Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Ссылки

Все темы Python Developer

Как в питоне работают обращения по ссылкам, что происходит в случаях присваивания, copy, deepcopy?

В Python переменные представляют собой ссылки на объекты. Когда вы присваиваете значение переменной, вы фактически создаете ссылку на объект в памяти, а не копируете сам объект. Рассмотрим, как это работает на примере:

a = [1, 2, 3]
b = a

В этом случае b становится ссылкой на тот же объект, на который ссылается a. Оба имени (a и b) указывают на один и тот же объект [1, 2, 3].

Присваивание копии объекта выполняется с помощью методов copy() и deepcopy():

1. copy():

a = [1, 2, 3]
b = a.copy()

Этот метод создает поверхностную копию объекта. Это означает, что он создает новый объект, который содержит ссылки на те же объекты, что и исходный объект (если он является контейнером, таким как список). Поэтому изменения вложенных объектов будут отражаться как в копии, так и в исходном объекте.

2. deepcopy():

import copy
a = [[1, 2], [3, 4]]
b = copy.deepcopy(a)

Этот метод создает полную копию объекта. Он рекурсивно копирует все вложенные объекты, создавая новые объекты для каждого из них. Таким образом, изменения в копии не будут влиять на исходный объект, и наоборот.

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

Эта страница была полезной?