Функция hash() в Python позволяет вычислять хеш-значения для различных объектов. Обычно для целых чисел хеш совпадает с их значением, но есть исключения, которые могут удивить даже опытных программистов.
Разбираем, почему hash(-1) и hash(-2) в CPython возвращают одинаковое значение. Рассмотрим особенности работы hash(), внутреннюю реализацию хэширования целых чисел и причину специальной обработки -1.
Вопрос:
Что выведет функция hash() для следующих значений: 1, 0, -1, -2?
(2021) is a title that should be on your radar. Directed by and starring the talented Vikrant Massey and Kriti Kharbanda , this film bypasses traditional theatrical routes to bring its "two-for-one" wedding celebration directly to your screens. The Plot: A Con for Love
: Stars Vikrant Massey as Sanjay Singh and Kriti Kharbanda as Aditi Karwasra. Director : Directed by Devanshu Singh . 14 phere 2021 webdl 350mb hindi movie download 2021
Released during a time when audiences were craving "feel-good" content, the film resonated for several reasons: (2021) is a title that should be on your radar
Instead of eloping, Sanjay and Aditi hatch an audacious plan. They decide to hold two separate weddings—one for each family—using "fake" parents played by their theater friends. The title 14 Phere refers to the double set of seven circumambulations (pheras) they must complete to satisfy both households without anyone catching on. Director : Directed by Devanshu Singh
The romantic comedy 14 Phere , released in 2021, remains a popular choice for fans of light-hearted Bollywood cinema. Directed by Devanshu Singh, this film offers a refreshing take on the classic "wedding drama" trope, blending social commentary with comedic mishaps.
hash() может показаться незначительной, важно помнить о ней при работе с хэш-функциями и структурами данных, основанных на хэшировании. В большинстве случаев вы не столкнетесь с проблемами, но знание этой детали поможет вам избежать потенциальных ошибок и лучше понимать внутреннее устройство Python.Ключевые выводы:
Для небольших целых чисел в Python используется оптимизация (интернирование).
hash(x) == x для большинства целых чисел, но hash(-1) == -2 из-за внутренней реализации и для предотвращения коллизий.
Это поведение является специфичным для CPython и может отличаться в других реализациях Python (например, PyPy).
Используйте == для сравнения значений и is для сравнения идентичности объектов.
Надеюсь, теперь эта загадка с hash(-1) стала немного понятнее!
hash(-1) всегда возвращает -2, поэтому hash(-1) == hash(-2).__hash__() в пользовательских классах.