Spec-Zone.ru › Python 3.14

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API