跳转到主要内容

PyHash API

See also the PyTypeObject.tp_hash member and numeric-hash.

Hash value type: signed integer.

3.2

Hash value type: unsigned integer.

3.2

A numerical value indicating the algorithm for hashing of str, bytes, and memoryview.

The algorithm name is exposed by sys.hash_info.algorithm.

3.4

Buffers of length in range [1, Py_HASH_CUTOFF) are hashed using DJBX33A instead of the algorithm described by Py_HASH_ALGORITHM.

  • A !Py_HASH_CUTOFF of 0 disables the optimization.
  • !Py_HASH_CUTOFF must be non-negative and less or equal than 7.

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.

3.4

The Mersenne prime P = 2**n -1, used for numeric hash scheme.

This corresponds to the sys.hash_info.modulus constant.

3.13

The exponent n of P in PyHASH_MODULUS.

3.13

Prime multiplier used in string and various other hashes.

3.13

The hash value returned for a positive infinity.

This corresponds to the sys.hash_info.inf constant.

3.13

The multiplier used for the imaginary part of a complex number.

This corresponds to the sys.hash_info.imag constant.

3.13

Hash function definition used by PyHash_GetFuncDef.

Hash function.

Hash function name (UTF-8 encoded string).

This corresponds to the sys.hash_info.algorithm constant.

Internal size of the hash value in bits.

This corresponds to the sys.hash_info.hash_bits constant.

Size of seed input in bits.

This corresponds to the sys.hash_info.seed_bits constant.

3.4

When Python is built with Py_HASH_ALGORITHM set to Py_HASH_EXTERNAL, the application embedding Python must define this variable to supply a hash implementation instead of using one of Python's built-in hash algorithms.

3.4

3.15 3.19 Use one of the built-in hash algorithms instead.

Get the hash function definition.

456 "Secure and interchangeable hash algorithm".

3.4

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.

3.13

Compute and return the hash value of a buffer of len bytes starting at address ptr. The hash is guaranteed to match that of bytes, memoryview, and other built-in objects that implement the buffer protocol <bufferobjects>.

Use this function to implement hashing for immutable objects whose ~PyTypeObject.tp_richcompare function compares to another object's buffer.

len must be greater than or equal to 0.

This function always succeeds.

3.14

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.

In CPython, it is equivalent to Py_HashPointer.

3.13