Документация Python неофициальный перевод

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.

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.