Модули и пакеты
Что такое pickle?
Pickle (Python pickle) — это модуль в Python, который предоставляет
мощные средства для сериализации и десериализации объектов Python. Сериализация
означает преобразование объекта Python в поток байтов, который затем можно
сохранить в файле или передать по сети. Десериализация — обратная операция, в
которой поток байтов преобразуется обратно в объект Python.
Основные возможности модуля pickle:
-
Сериализация: Преобразование объектов Python (например, списков, словарей, классов) в байтовый поток.
-
Десериализация: Преобразование байтового потока обратно в объекты Python.
-
Хранение в файле: Возможность сохранять сериализованные объекты в файлы для долгосрочного хранения или обмена данными.
-
Передача по сети: Передача сериализованных объектов между процессами или компьютерами через сеть.
Пример использования модуля pickle для сериализации и десериализации объектов:
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.
В чем разница между модулем и пакетом?
В Python термины “модуль” и “пакет” относятся к организации кода:
-
Модуль:
-
Модуль в Python представляет собой файл с расширением
.py, который содержит Python код (функции, классы, переменные и т.д.). -
Модуль может быть импортирован в другие модули или скрипты с целью использования его функциональности.
-
Пример: файл
module.py, содержащий определение функций и классов.
-
-
Пакет:
-
Пакет в Python представляет собой каталог (директорию), которая содержит один или несколько модулей и специальный файл
__init__.py. -
Файл
__init__.pyможет быть пустым или содержать инициализационный код для пакета. -
Пакет позволяет организовать и структурировать большие проекты на Python.
-
Пример: папка
mypackage, содержащая файлы__init__.py,module1.py,module2.py.
-
Таким образом, модуль — это отдельный файл с Python кодом, а пакет — это каталог, который может содержать один или несколько модулей и представлен специальным файлом __init__.py.