PyHash API

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

type Py_hash_t

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

Added in version 3.2.

type Py_uhash_t

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

Added in version 3.2.

Py_HASH_ALGORITHM

一个指明用于 str, bytesmemoryview 的哈希算法的数字值。

算法名称由 sys.hash_info.algorithm 对外公开。

Added in version 3.4.

Py_HASH_FNV
Py_HASH_SIPHASH24
Py_HASH_SIPHASH13

Py_HASH_ALGORITHM 进行比较以确定使用哪种哈希算法的数字值。 哈希算法可通过 --with-hash-algorithm 选项来配置。

Added in version 3.4: 增加 Py_HASH_FNVPy_HASH_SIPHASH24

Added in version 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 位平台的截断值因为这更容易创建碰撞字符串。 截断值在 64 位平台上为 7 而在 32 位平台上为 5 应当能够提供足够的安全边界。

这对应于 sys.hash_info.cutoff 常量。

Added in version 3.4.

PyHASH_MODULUS

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

这对应于 sys.hash_info.modulus 常量。

Added in version 3.13.

PyHASH_BITS

PPyHASH_MODULUS 中的 n 次幂。

Added in version 3.13.

PyHASH_MULTIPLIER

质因数被用于字符串和多种其他哈希算法中。

Added in version 3.13.

PyHASH_INF

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

这对应于 sys.hash_info.inf 常量。

Added in version 3.13.

PyHASH_IMAG

用于复数虚部的乘数。

这对应于 sys.hash_info.imag 常量。

Added in version 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 常量。

Added in version 3.4.

PyHash_FuncDef *PyHash_GetFuncDef(void)

获取哈希函数定义。

参见

PEP 456 "安全且可互换的哈希算法"。

Added in version 3.4.

Py_hash_t Py_HashPointer(const void *ptr)

对指针值执行哈希运算:将指针值作为整数来处理(在内部将其转换为 uintptr_t 类型)。 指针不会被撤销引用。

此函数不会失败:它不可能返回 -1

Added in version 3.13.

Py_hash_t PyObject_GenericHash(PyObject *obj)

将会被放入类型对象的 tp_hash 槽位的泛型哈希函数。 其结果值仅取决于对象的标识号。

在 CPython 中,它等价于 Py_HashPointer()

Added in version 3.13.