API PyHash
См. также элемент PyTypeObject.tp_hash и раздел Хеширование числовых типов.
-
type Py_hash_t -
Тип хеш-значения: целое число со знаком.
Добавлено в версии 3.2.
-
type Py_uhash_t -
Тип хеш-значения: целое число без знака.
Добавлено в версии 3.2.
-
Py_HASH_ALGORITHM -
Числовое значение, указывающее алгоритм хеширования
str,bytesиmemoryview.Название алгоритма доступно через
sys.hash_info.algorithm.Добавлено в версии 3.4.
-
Py_HASH_FNV -
Py_HASH_SIPHASH24 -
Py_HASH_SIPHASH13 -
Числовые значения для сравнения с
Py_HASH_ALGORITHM, позволяющие определить используемый алгоритм хеширования. Алгоритм хеширования можно настроить с помощью параметра configure--with-hash-algorithm.Добавлено в версии 3.4: Добавлены
Py_HASH_FNVиPy_HASH_SIPHASH24.Добавлено в версии 3.11: Добавлен
Py_HASH_SIPHASH13.
-
Py_HASH_CUTOFF -
Буферы длиной в диапазоне
[1, Py_HASH_CUTOFF)хешируются с помощью DJBX33A, а не алгоритма, описанного вPy_HASH_ALGORITHM.- Значение
Py_HASH_CUTOFF, равное 0, отключает оптимизацию. -
Py_HASH_CUTOFFдолжно быть неотрицательным и не превышать 7.
На 32-разрядных платформах следует использовать порог меньше, чем на 64-разрядных, поскольку там легче создавать строки с совпадающими хешами. Порог 7 на 64-разрядных платформах и 5 на 32-разрядных должен обеспечивать достаточный запас безопасности.
Этому соответствует константа
sys.hash_info.cutoff.Добавлено в версии 3.4.
- Значение
-
PyHASH_MODULUS -
Простое число Мерсенна
P = 2**n -1, используемое в схеме числового хеширования.Этому соответствует константа
sys.hash_info.modulus.Добавлено в версии 3.13.
-
PyHASH_BITS -
Показатель степени
nчислаPвPyHASH_MODULUS.Добавлено в версии 3.13.
-
PyHASH_MULTIPLIER -
Простой множитель, используемый в хешировании строк и различных других хешах.
Добавлено в версии 3.13.
-
PyHASH_INF -
Хеш-значение, возвращаемое для положительной бесконечности.
Этому соответствует константа
sys.hash_info.inf.Добавлено в версии 3.13.
-
PyHASH_IMAG -
Множитель, используемый для мнимой части комплексного числа.
Этому соответствует константа
sys.hash_info.imag.Добавлено в версии 3.13.
-
type PyHash_FuncDef -
Описание хеш-функции, используемое функцией
PyHash_GetFuncDef().-
Py_hash_t (*const hash)(const void*, Py_ssize_t) -
Хеш-функция.
-
const char *name -
Название хеш-функции (строка в кодировке UTF-8).
Этому соответствует константа
sys.hash_info.algorithm.
-
const int hash_bits -
Внутренний размер хеш-значения в битах.
Этому соответствует константа
sys.hash_info.hash_bits.
-
const int seed_bits -
Размер входного значения начального числа в битах.
Этому соответствует константа
sys.hash_info.seed_bits.
Добавлено в версии 3.4.
-
-
PyHash_FuncDef *PyHash_GetFuncDef(void) -
Получить описание хеш-функции.
См. также
PEP 456 «Безопасный и взаимозаменяемый алгоритм хеширования».
Добавлено в версии 3.4.
-
Py_hash_t Py_HashPointer(const void *ptr) -
Вычислить хеш указателя: обработать значение указателя как целое число (внутри привести его к
uintptr_t). Разыменование указателя не выполняется.Функция не может завершиться с ошибкой: она не может вернуть
-1.Добавлено в версии 3.13.
-
Py_hash_t Py_HashBuffer(const void *ptr, Py_ssize_t len) -
Вычислить и вернуть хеш-значение буфера из len байтов, начинающегося по адресу ptr. Гарантируется, что хеш будет совпадать с хешем
bytes,memoryviewи других встроенных объектов, реализующих буферный протокол.Используйте эту функцию для реализации хеширования неизменяемых объектов, функция
tp_richcompareкоторых сравнивает их с буфером другого объекта.len должно быть больше или равно
0.Эта функция всегда выполняется успешно.
Добавлено в версии 3.14.
-
Py_hash_t PyObject_GenericHash(PyObject *obj) -
Универсальная функция хеширования, предназначенная для размещения в слоте
tp_hashобъекта типа. Её результат зависит только от идентичности объекта.Деталь реализации CPython: В CPython она эквивалентна
Py_HashPointer().Добавлено в версии 3.13.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/hash.html