Функция hash() в Python позволяет вычислять хеш-значения для различных объектов. Обычно для целых чисел хеш совпадает с их значением, но есть исключения, которые могут удивить даже опытных программистов.
Разбираем, почему hash(-1) и hash(-2) в CPython возвращают одинаковое значение. Рассмотрим особенности работы hash(), внутреннюю реализацию хэширования целых чисел и причину специальной обработки -1.
Вопрос:
Что выведет функция hash() для следующих значений: 1, 0, -1, -2?
If your hardware doesn't support a newer Android OS, you may need a newer device to continue using the service.
The official WhatsApp servers will block connection requests from older app versions running on unsupported operating systems. whatsapp android 4.4.2 apk
For a long time, Android 4.1 was the minimum requirement. If your hardware doesn't support a newer Android
The key is to find an older version of WhatsApp that was built to support Android 4.4.2. Newer versions will not install or will crash immediately upon launch. Since the Google Play Store only offers the latest version, you'll need to find a trustworthy APK (Android Package Kit) file from a third-party source. We recommend using APKMirror.com. This platform is widely recognized as a reliable and safe source for downloading clean APK files. Here's how to use it: The key is to find an older version
Keeping an older, perfectly functional device out of the landfill.
: Older Android versions do not support modern TLS 1.3 encryption, making it impossible to connect to WhatsApp's current secure servers. Media Handling
Instead of trying to install a "whatsapp android 4.4.2 apk," the best way to use WhatsApp on an old Android 4.4.2 device is via the web browser.
hash() может показаться незначительной, важно помнить о ней при работе с хэш-функциями и структурами данных, основанных на хэшировании. В большинстве случаев вы не столкнетесь с проблемами, но знание этой детали поможет вам избежать потенциальных ошибок и лучше понимать внутреннее устройство Python.Ключевые выводы:
Для небольших целых чисел в Python используется оптимизация (интернирование).
hash(x) == x для большинства целых чисел, но hash(-1) == -2 из-за внутренней реализации и для предотвращения коллизий.
Это поведение является специфичным для CPython и может отличаться в других реализациях Python (например, PyPy).
Используйте == для сравнения значений и is для сравнения идентичности объектов.
Надеюсь, теперь эта загадка с hash(-1) стала немного понятнее!
hash(-1) всегда возвращает -2, поэтому hash(-1) == hash(-2).__hash__() в пользовательских классах.