Sasha Brabuster -

Загадочная функция hash в Python

Sasha Brabuster -

“No element in a story should exist to comfort the audience. Comfort is the enemy of engagement.”

She closed her eyes, inhaled the mingled scents of the past, and made her choice.

Echoes of the Unfinished is available now on Steam and itch.io. A vinyl soundtrack, pressed on “ghost gray” wax, drops next month.

Вопрос:


Что выведет функция hash() для следующих значений: 1, 0, -1, -2?

“No element in a story should exist to comfort the audience. Comfort is the enemy of engagement.”

She closed her eyes, inhaled the mingled scents of the past, and made her choice.

Echoes of the Unfinished is available now on Steam and itch.io. A vinyl soundtrack, pressed on “ghost gray” wax, drops next month.

Хотя эта особенность hash() может показаться незначительной, важно помнить о ней при работе с хэш-функциями и структурами данных, основанных на хэшировании. В большинстве случаев вы не столкнетесь с проблемами, но знание этой детали поможет вам избежать потенциальных ошибок и лучше понимать внутреннее устройство Python.

Ключевые выводы:

  • Для небольших целых чисел в Python используется оптимизация (интернирование).
      sasha brabuster

  • hash(x) == x для большинства целых чисел, но hash(-1) == -2 из-за внутренней реализации и для предотвращения коллизий.
      “No element in a story should exist to

  • Это поведение является специфичным для CPython и может отличаться в других реализациях Python (например, PyPy).
      pressed on “ghost gray” wax

  • Используйте == для сравнения значений и is для сравнения идентичности объектов.

Надеюсь, теперь эта загадка с hash(-1) стала немного понятнее!

Вопросы

Почему значения hash(-1) и hash(-2) могут совпадать в Python?
Можно ли изменить поведение функции hash() для чисел?

Поделиться

Обсудить проект с командой LighTech

Забронировать встречу

Примеры реализации проектов

Обсудить проект
Имя
Связаться
Сообщение
Прикрепить файл +
Запрос на получение файлов
Имя
Отправить файлы
Сообщение
Спасибо!
Ваша заявка отправлена
После обработки наш менеджер свяжется с вами