---
title: Ссылки
seo:
  title: Ссылки — Python Developer
  description: "Тема «Ссылки» для собеседования Python Developer. Как в питоне работают обращения по ссылкам, что происходит в случаях присваивания, copy, deepcopy?"
---

[Все темы Python Developer](/python-developer)

## <strong>Как в питоне работают обращения по ссылкам, что происходит в случаях присваивания, copy, deepcopy?</strong> [#q-14bee738d69b8131b2b9f8091ed28343]

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

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

В этом случае <code>b</code> становится ссылкой на тот же объект, на который ссылается <code>a</code>. Оба имени (<code>a</code> и <code>b</code>) указывают на один и тот же объект <code>&#91;1&#44; 2&#44; 3&#93;</code>.

Присваивание копии объекта выполняется с помощью методов <code>copy&#40;&#41;</code> и <code>deepcopy&#40;&#41;</code>&#58;

<strong>1&#46; copy()</strong>&#58;

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

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

<strong>2&#46; deepcopy()</strong>&#58;

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

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

Поэтому, когда вы работаете с объектами в Python, важно понимать, что присваивание переменной не копирует сам объект, а только создает ссылку на него. Если вам нужна копия объекта, используйте методы <code>copy&#40;&#41;</code> или <code>deepcopy&#40;&#41;</code>.

:::note[Ссылки для изучения]

1. [Ссылки и изменяемость в Python](https://ru.hexlet.io/courses/python-lists/lessons/references-and-mutation/theory_unit)
   :::
