> **Источник:** https://python-all.ru/2.7/library/pickletools.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 32.13. [`pickletools`](https://python-all.ru/2.7/library/pickletools.html#module-pickletools) – Инструменты для разработчиков pickle

Новое в версии 2.3.

**Исходный код:** [Lib/pickletools.py](https://python-all.ru/src/2.7/Lib/pickletools.py)

---

Этот модуль содержит различные константы, относящиеся к тонкостям модуля [`pickle`](https://python-all.ru/2.7/library/pickle.html#module-pickle), подробные комментарии о реализации и несколько полезных функций для анализа сериализованных данных. Содержимое этого модуля полезно разработчикам ядра Python, работающим над реализациями [`pickle`](https://python-all.ru/2.7/library/pickle.html#module-pickle) и [`cPickle`](https://python-all.ru/2.7/library/pickle.html#module-cPickle); обычным пользователям модуля [`pickle`](https://python-all.ru/2.7/library/pickle.html#module-pickle) модуль [`pickletools`](https://python-all.ru/2.7/library/pickletools.html#module-pickletools), скорее всего, не понадобится.

#### `pickletools.dis(pickle, out=None, memo=None, indentlevel=4)`

Выводит символический разбор pickle в файлоподобный объект *out*, по умолчанию в `sys.stdout`. *pickle* может быть строкой или файлоподобным объектом. *memo* может быть словарём Python, который будет использоваться как памятка pickle; его можно использовать для выполнения разборов по нескольким pickle, созданным одним и тем же упаковщиком. Последовательные уровни, обозначаемые `MARK` опкодами в потоке, отступают на *indentlevel* пробелов.

#### `pickletools.genops(pickle)`

Предоставляет [итератор](https://python-all.ru/2.7/glossary.html#term-iterator) по всем опкодам в pickle, возвращая последовательность троек `(opcode, arg, pos)`. *opcode* – экземпляр класса `OpcodeInfo`; *arg* – это декодированное значение (как объект Python) аргумента опкода; *pos* – позиция, на которой находится этот опкод. *pickle* может быть строкой или файлоподобным объектом.

#### `pickletools.optimize(picklestring)`

Возвращает новую эквивалентную pickle-строку после удаления неиспользуемых опкодов `PUT`. Оптимизированный pickle короче, занимает меньше времени на передачу, требует меньше места при хранении и распаковывается более эффективно.

Новое в версии 2.6.
