Python

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, bytes, 그리고 memoryview 를 해싱하는 알고리즘을 나타내는 수치 값입니다.

알고리즘 이름은 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_FNV`와 :c:macro:!Py_HASH_SIPHASH24`를 추가합니다.

Added in version 3.11: Py_HASH_SIPHASH13 을 추가합니다.

Py_HASH_CUTOFF

길이가 [1, Py_HASH_CUTOFF) 범위에 있는 버퍼는 Py_HASH_ALGORITHM 이 설명하는 알고리즘 대신 DJBX33A를 사용하여 해싱됩니다.

  • Py_HASH_CUTOFF 이 0이면 최적화가 비활성화됩니다.

  • Py_HASH_CUTOFF 은 음수가 아니어야 하며 7보다 작거나 같아야 합니다.

32비트 플랫폼은 충돌하는 문자열을 생성하기가 더 쉽기 때문에 64비트 플랫폼보다 작은 차단값(cutoff)을 사용해야 합니다. 64비트 플랫폼에서는 7, 32비트 플랫폼에서는 5의 차단값을 사용하는 것이 적절한 안전 마진을 제공합니다.

이 값은 sys.hash_info.cutoff 상수에 해당합니다.

Added in version 3.4.

PyHASH_MODULUS

수치 해시 체계에 사용되는 메르센 소수(Mersenne prime) P = 2**n -1 입니다.

이 값은 sys.hash_info.modulus 상수에 해당합니다.

Added in version 3.13.

PyHASH_BITS

PyHASH_MODULUS 에서 P 의 지수 n 입니다.

Added in version 3.13.

PyHASH_MULTIPLIER

문자열 및 기타 다양한 해시에서 사용되는 소수 승수(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 Py_HashBuffer(const void *ptr, Py_ssize_t len)

ptr 주소부터 시작하는 len 바이트의 버퍼에 대한 해시 값을 계산하여 반환합니다. 이 해시는 bytes, memoryviewbuffer protocol 를 구현하는 기타 내장 객체의 해시 값과 일치함이 보장됩니다.

tp_richcompare 함수가 다른 객체의 버퍼와 비교되는 불변 객체에 대한 해싱을 구현할 때 이 함수를 사용하십시오.

len0 보다 크거나 같아야 합니다.

이 함수는 항상 성공합니다.

Added in version 3.14.

Py_hash_t PyObject_GenericHash(PyObject *obj)

타입 객체의 tp_hash 슬롯에 넣기 위한 일반적인 해싱 함수입니다. 이 결과는 객체의 식별성(identity)에만 의존합니다.

CPython에서 이는 Py_HashPointer() 와 동일합니다.

Added in version 3.13.