Ответ
В Python существует несколько стандартных и сторонних библиотек для сериализации (преобразования объекта в поток байт или строку) и десериализации (обратного процесса).
1. json
Стандартный модуль для работы с текстовым форматом JSON. Это универсальный и человекочитаемый формат, идеальный для веб-API и обмена данными между системами на разных языках.
import json
data = {'name': 'Alice', 'age': 30}
# Сериализация в строку
json_string = json.dumps(data)
# Десериализация из строки
restored_data = json.loads(json_string)
2. pickle
Стандартный модуль для сериализации именно Python-объектов. Сохраняет объекты в бинарном формате, включая их типы и структуру.
Важно: pickle
небезопасен. Не следует десериализовать данные из недоверенных источников, так как это может привести к выполнению произвольного кода.
import pickle
data = {'name': 'Alice', 'age': 30}
# Сериализация в байты
pickled_data = pickle.dumps(data)
# Десериализация из байт
restored_data = pickle.loads(pickled_data)
3. PyYAML
(сторонняя библиотека)
Библиотека для работы с форматом YAML, который часто используется для конфигурационных файлов из-за его высокой читаемости.
# pip install pyyaml
import yaml
data = {'name': 'Alice', 'age': 30}
# Сериализация
yaml_string = yaml.dump(data)
# Десериализация (безопасный способ)
restored_data = yaml.safe_load(yaml_string)
Когда что использовать?
json
: Для веб-API, обмена данными с другими языками, хранения простых данных.pickle
: Для сохранения состояния Python-объектов внутри одного приложения (например, для кэширования или временного хранения). Только с доверенными данными!PyYAML
: Для файлов конфигурации, которые должны легко читаться и редактироваться человеком.