PyHash API

另请参阅 PyTypeObject.tp_hash 成员和数值类型的哈希

类型 Py_hash_t

哈希值类型:有符号整数。

在 3.2 版本加入。

类型 Py_uhash_t

哈希值类型:无符号整数。

在 3.2 版本加入。

PyHASH_MODULUS

梅森素数 P = 2**n -1,用于数值哈希方案。

在 3.13 版本加入。

PyHASH_BITS

PyHASH_MODULUSP 的指数 n

在 3.13 版本加入。

PyHASH_MULTIPLIER

在字符串和各种其他哈希中使用的素数乘数。

在 3.13 版本加入。

PyHASH_INF

对于正无穷大返回的哈希值。

在 3.13 版本加入。

PyHASH_IMAG

用于复数虚部的乘数。

在 3.13 版本加入。

类型 PyHash_FuncDef

PyHash_GetFuncDef() 使用的哈希函数定义。

Py_hash_t (*const hash)(const void*, Py_ssize_t)

哈希函数。

const char *name

哈希函数名称(UTF-8 编码字符串)。

const int hash_bits

哈希值的内部大小(以位为单位)。

const int 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)

计算并返回从地址 ptr 开始的 len 字节缓冲区的哈希值。该哈希保证与 bytesmemoryview 以及其他实现缓冲区协议的内置对象匹配。

使用此函数为不可变对象实现哈希,其 tp_richcompare 函数将与另一个对象的缓冲区进行比较。

len 必须大于或等于 0

此函数总是成功的。

在 3.14 版本加入。

Py_hash_t PyObject_GenericHash(PyObject *obj)

通用哈希函数,旨在放置在类型对象的 tp_hash 插槽中。其结果仅取决于对象的标识。

CPython 实现细节: 在 CPython 中,它等效于 Py_HashPointer()

在 3.13 版本加入。