---
title: Модули и пакеты
seo:
  title: Модули и пакеты — Data Analyst
  description: Тема «Модули и пакеты» для собеседования Data Analyst. Что такое pickle? В чем разница между модулем и пакетом?
---

[Все темы Data Analyst](/data-analyst)

## <strong>Что такое</strong> <code>pickle</code><strong>?</strong> [#q-14bee738d69b811fbd4cc1b2b47bd3ba]

<code>Pickle</code> (Python pickle) — это модуль в Python, который предоставляет
мощные средства для сериализации и десериализации объектов Python. Сериализация
означает преобразование объекта Python в поток байтов, который затем можно
сохранить в файле или передать по сети. Десериализация — обратная операция, в
которой поток байтов преобразуется обратно в объект Python.

Основные возможности модуля <code>pickle</code>&#58;

- <strong>Сериализация</strong>&#58; Преобразование объектов Python (например,
  списков, словарей, классов) в байтовый поток.

- <strong>Десериализация</strong>&#58; Преобразование байтового потока обратно в
  объекты Python.

- <strong>Хранение в файле</strong>&#58; Возможность сохранять сериализованные
  объекты в файлы для долгосрочного хранения или обмена данными.

- <strong>Передача по сети</strong>&#58; Передача сериализованных объектов между
  процессами или компьютерами через сеть.

Пример использования модуля <code>pickle</code> для сериализации и десериализации объектов&#58;

```python
import pickle

# Сериализация объекта в байтовый поток
data = {'name': 'John', 'age': 30, 'city': 'New York'}
serialized_data = pickle.dumps(data)

# Десериализация байтового потока в объект
deserialized_data = pickle.loads(serialized_data)

print(deserialized_data)  # Вывод: {'name': 'John', 'age': 30, 'city': 'New York'}
```

Десериализация pickle может выполнить произвольный код. Загружайте только доверенные данные, целостность которых обеспечена. Совместимость протокола зависит от версии Python.

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

1. [Модули и пакеты в Python](https://habr.com/ru/articles/718828/)
   :::

---

## <strong>В чем разница между модулем и пакетом?</strong> [#q-14bee738d69b8132b36bc310b3e85b00]

В Python термины "модуль" и "пакет" относятся к организации кода&#58;

{/* prettier-ignore */}
1. <strong>Модуль</strong>&#58;

    - Модуль в Python представляет собой файл с расширением <code>&#46;py</code>, который содержит Python код (функции, классы, переменные и т.д.).

    - Модуль может быть импортирован в другие модули или скрипты с целью использования его функциональности.

    - Пример&#58; файл <code>module&#46;py</code>, содержащий определение функций и классов.

1. <strong>Пакет</strong>&#58;

    - Пакет в Python представляет собой каталог (директорию), которая содержит один или несколько модулей и специальный файл <code>&#95;&#95;init&#95;&#95;&#46;py</code>.

    - Файл <code>&#95;&#95;init&#95;&#95;&#46;py</code> может быть пустым или содержать инициализационный код для пакета.

    - Пакет позволяет организовать и структурировать большие проекты на Python.

    - Пример&#58; папка <code>mypackage</code>, содержащая файлы <code>&#95;&#95;init&#95;&#95;&#46;py</code>, <code>module1&#46;py</code>, <code>module2&#46;py</code>.

Таким образом, модуль — это отдельный файл с Python кодом, а пакет — это каталог, который может содержать один или несколько модулей и представлен специальным файлом <code>\_\_init\_\_&#46;py</code>.

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

1. [Модули и пакеты в Python](https://habr.com/ru/articles/718828/)
   :::
