Русский
Открыть в Telegram

Пост Как получать стабильный хеш Python-объектов

18 сентября 2026
Z
Zen of Python
Ссылка
нажмите — покажем
Как получать стабильный хеш Python-объектов Встроенный hash() для этого не подходит: хеши строк и bytes меняются между процессами, а списки, словари и изменяемые dataclass он не принимает. hashlib детерминирован, но ждёт байты. Значит, сначала объект надо привести к однозначному набору байтов. Автор разбирает, почему pickle не обещает одинаковый поток байтов, а str и repr могут терять значимые данные или включать адрес объекта. Решение строится на JSON: встроенные типы, datetime и dataclass приводятся к поддерживаемому представлению, неподдерживаемые значения вызывают ошибку, пустые и выбранные поля можно пропустить. В статье есть требования, промежуточные неудачные варианты и итоговый код без сторонних зависимостей. Подход пригодится, если хеш хранится дольше одного процесса или должен совпадать в разных реализациях Python.
1 · 1.3K ·

Рядом в ленте

ZZen of PythonКак изолировать Pydantic Settings от окружения в pytest Если Settings создаётся при импорте пакета, он читает .env и переменные оболочки до запуска фикстуры pytZZen of PythonКогда namedtuple всё ещё лучше dataclass После появления dataclass именованный кортеж перестал быть универсальной заменой маленькому классу. Он всегда поддержив
это сообщение
ZZen of PythonКак подключать pytest-фикстуры без лишних аргументов теста Иногда фикстура нужна только ради побочного эффекта: например, перед тестом она подменяет os.environ.ZZen of PythonГде заканчивается ускорение NumPy и что выбрать дальше Векторизация выполняет цикл низкоуровневым кодом. В тесте прибавление 17 к 100 млн элементов заняло 6,13
ZZen of PythonZen of Python@zen_of_python · канал · Технологии
18 712подписчиков1 126средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем