Python Glossary English

все Python 3pickleфункция

pickle.dumps()

сериализация

Превращает объект в bytes в формате pickle — для передачи между процессами, кэша или хранения в базе.

Синтаксис

data = pickle.dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None)

Возвращает bytes, а не str: в текстовое поле или JSON их без base64 не положить. Байты зависят от протокола, версии и даже порядка вставки ключей, поэтому сравнивать dumps(a) == dumps(b) вместо a == b нельзя — равные словари дают разные байты. Лямбды, генераторы, открытые файлы, соединения и блокировки не сериализуются. Обратная операция loads() исполняет код из данных — такие байты можно принимать только от себя.

Примеры

import pickle
print(type(pickle.dumps({'a': 1})).__name__)  # → bytes
print(pickle.dumps({'a': 1, 'b': 2}) == pickle.dumps({'b': 2, 'a': 1}))  # → False
try:
    pickle.dumps(lambda x: x)
except pickle.PicklingError:
    print('лямбду не сохранить')  # → лямбду не сохранить

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности