Главная
/
Блог
/
Gujarati Natak By Siddharth Randeria
/
Gujarati Natak By Siddharth Randeria

Gujarati Natak By Siddharth Randeria |verified| -

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

Функция hash() в Python позволяет вычислять хеш-значения для различных объектов. Обычно для целых чисел хеш совпадает с их значением, но есть исключения, которые могут удивить даже опытных программистов. 

Разбираем, почему hash(-1) и hash(-2) в CPython возвращают одинаковое значение. Рассмотрим особенности работы hash(), внутреннюю реализацию хэширования целых чисел и причину специальной обработки -1.

Вопрос на интервью

Однажды на собеседовании мне задали, казалось бы, простой вопрос.

Вопрос:


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

Gujarati Natak By Siddharth Randeria |verified| -

for his prolific career spanning over 45 years. He is most famous for creating the iconic

A political satire that cleverly dodged censor issues by using metaphor. Randeria played a corrupt bureaucrat. The play's success showed that his audience was ready for intellectual comedy, provided the "Gujarati Asmita" (pride) was intact. Gujarati Natak By Siddharth Randeria

Gujarati Natak, also known as Gujarati theatre, has its roots in the 19th century. During this period, traditional folk theatre forms like folk dances and music were an integral part of Gujarati culture. The British colonial era saw the introduction of Western-style theatre, which influenced the development of Gujarati Natak. The first Gujarati play, "Rajalilata," was written by Nandshankar Bhatt in 1850. However, it was not until the early 20th century that Gujarati Natak gained popularity and recognition. for his prolific career spanning over 45 years

To discuss Randeria’s body of work is to list the greatest hits of Gujarati theatre. While he has over 50 plays to his credit, a few stand as cultural milestones: The play's success showed that his audience was

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

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

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

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

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

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

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

Вопросы

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

Поделиться

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

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

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

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