PyHash API¶
См. также член 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¶
Размер входных данных seed в битах.
Это соответствует константе
sys.hash_info.seed_bits.
Добавлено в версии 3.4.
-
Py_hash_t (*const hash)(const void*, Py_ssize_t)¶
-
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.