Сообщить об ошибке.

Краткий обзор раздела: Модуль pickle, упаковка объектов Python

Содержание с кратким описанием:

ОБЗОР: Модуль pickle, упаковка объектов Python.
Модуль pickle реализует двоичные протоколы для сериализации и десериализации структуры объекта Python. "Pickling" - это процесс, посредством которого иерархия объектов Python преобразуется в поток байтов, а "unpickling" - обратная операция
Какие данные можно сохранять при помощи pickle.
при помощи pickle можно сохранять None, True и False; Целые числа, числа с плавающей точкой, комплексные числа; Строки, байты, байтовые массивы; Функции, определенные на верхнем уровне модуля с помощью ключевого слова def, lambda-функции упаковывать нельзя;
Функции dump() и dumps() модуля pickle в Python.
Функция `dump()` модуля `pickle` записывает сериализованное представление объекта `obj` в открытый файловый объект.Функция `pickle.dumps()` возвращает выбранное представление объекта `obj` как объекта байтов вместо записи его в файл.
Функция load() и loads() модуля pickle в Python.
Функция load() модуля pickle читает упакованное представление объекта из открытого файлового объекта file и возвращает указанную в нем иерархию восстановленных объектов. Функция pickle.loads() возвращает восстановленную иерархию объектов из строкового представления данных объекта data.
Класс Pickler() модуля pickle в Python.
Класс `Pickler()` модуля `pickle` берет двоичный файл для записи потока данных `pickle`.
Класс Unpickler() модуля pickle в Python.
Класс `Unpickler()` модуля `pickle` читает двоичный поток данных `pickle` из файла `file`.
Константы модуля pickle в Python.
Константа pickle.HIGHEST_PROTOCOL это целое число, самая высокая доступная версия протокола. Константа pickle.DEFAULT_PROTOCOL это целое число - версия протокола по умолчанию.
Исключения модуля pickle в Python.
Модуль `pickle` определяет три исключения: pickle.PickleError, pickle.PicklingError, pickle.UnpicklingError
Распаковка pickle данных из ненадежных источников.
В этом примере `unpickler` импортирует функцию `os.system()` и затем выполняет команду `echo hello world` в системной оболочке bash. По этой причине необходимо контролировать те данные, которые приходят из ненадежных источников, настраивая метод `Unpickler.find_class()`.
Сохранение внешних объектов в pickle.
Модуль `pickle` поддерживает понятие ссылки на объект вне потока обработанных данных. На такие объекты ссылается постоянный идентификатор. Для выбора объектов, имеющих внешний постоянный идентификатор, `pickle.Pickler()` должен иметь собственный метод `Pickler.persistent_id()`.
Таблицы диспетчеризации объекта pickle в Python.
Если кто-то хочет настроить упаковку некоторых классов, не нарушая какой-либо другой код, который зависит от сохранения, тогда можно создать `pickle.Pickler()` с пользовательской таблицей диспетчеризации.
Извлечение функций и классов по именам в pickle в Python.
Что если необходимо настроить выборку на основе другого критерия, нежели тип объекта или сделать выборку функций и классов по именам. В этих случаях можно создать подкласс из класса `pickle.Pickler()` и реализовать метод `Pickler.reducer_override()`.