PyHash API¶
See also the PyTypeObject.tp_hash member and Hashing of numeric types.
-
type Py_hash_t¶
Hash value type: signed integer.
-
type Py_uhash_t¶
Hash value type: unsigned integer.
-
Py_HASH_ALGORITHM¶
A numerical value indicating the algorithm for hashing of str,
bytes, and memoryview.
The algorithm name is exposed by sys.hash_info.algorithm.
-
Py_HASH_FNV¶
-
Py_HASH_SIPHASH24¶
-
Py_HASH_SIPHASH13¶
Numerical values to compare to Py_HASH_ALGORITHM to determine
which algorithm is used for hashing. The hash algorithm can be configured
via the configure --with-hash-algorithm option.
Added in version 3.4: Add Py_HASH_FNV and Py_HASH_SIPHASH24.
Added in version 3.11: Add Py_HASH_SIPHASH13.
-
Py_HASH_CUTOFF¶
Buffers of length in range [1, Py_HASH_CUTOFF) are hashed using DJBX33A
instead of the algorithm described by Py_HASH_ALGORITHM.
32-bit platforms should use a cutoff smaller than 64-bit platforms because
it is easier to create colliding strings. A cutoff of 7 on 64-bit platforms
and 5 on 32-bit platforms should provide a decent safety margin.
This corresponds to the sys.hash_info.cutoff constant.
-
PyHASH_MODULUS¶
The Mersenne prime P = 2**n -1,
used for numeric hash scheme.
This corresponds to the sys.hash_info.modulus constant.
-
PyHASH_BITS¶
The exponent n of P in PyHASH_MODULUS.
-
PyHASH_MULTIPLIER¶
Prime multiplier used in string and various other hashes.
-
PyHASH_INF¶
The hash value returned for a positive infinity.
This corresponds to the sys.hash_info.inf constant.
-
PyHASH_IMAG¶
The multiplier used for the imaginary part of a complex number.
This corresponds to the sys.hash_info.imag constant.
-
type PyHash_FuncDef¶
Hash function definition used by PyHash_GetFuncDef().
-
Py_hash_t (*const hash)(const void*, Py_ssize_t)¶
Hash function.
-
const char *name¶
Hash function name (UTF-8 encoded string).
This corresponds to the sys.hash_info.algorithm constant.
-
const int hash_bits¶
Internal size of the hash value in bits.
This corresponds to the sys.hash_info.hash_bits constant.
-
const int seed_bits¶
Size of seed input in bits.
This corresponds to the sys.hash_info.seed_bits constant.
-
PyHash_FuncDef *PyHash_GetFuncDef(void)¶
Get the hash function definition.
See also
PEP 456 “Secure and interchangeable hash algorithm”.
-
Py_hash_t Py_HashPointer(const void *ptr)¶
Hash a pointer value: process the pointer value as an integer (cast it to
uintptr_t internally). The pointer is not dereferenced.
The function cannot fail: it cannot return -1.
-
Py_hash_t PyObject_GenericHash(PyObject *obj)¶
Generic hashing function that is meant to be put into a type
object’s tp_hash slot.
Its result only depends on the object’s identity.
CPython implementation detail: In CPython, it is equivalent to Py_HashPointer().
©
Copyright 2001-2026, Python Software Foundation.
This page is licensed under the Python Software Foundation License Version 2.
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
See
History and License for more information.
The Python Software Foundation is a non-profit corporation.
Please donate.
Last updated on Oct 26, 2026 (13:10 UTC).
Found a bug?
Created using
Sphinx 8.2.3.