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_EXTERNAL

해싱에 사용되는 알고리즘을 결정하기 위해 Py_HASH_ALGORITHM 과 비교할 수 있는 수치들입니다. 기본 해시 알고리즘은 구성 시 --with-hash-algorithm 옵션을 통해 설정할 수 있습니다.

Py_HASH_EXTERNAL 은 값 0 을 가지며, Python을 임베딩하는 애플리케이션에서 제공하는 해시 구현을 의미합니다. 자세한 내용은 PyHash_Func 를 참조하십시오.

Added in version 3.4: Py_HASH_FNV, Py_HASH_SIPHASH24, 및 Py_HASH_EXTERNAL 을 추가합니다.

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_Func

Py_HASH_ALGORITHM 이 Py_HASH_EXTERNAL 로 설정된 상태에서 Python이 빌드된 경우, Python을 임베딩하는 애플리케이션은 Python의 내장 해시 알고리즘 중 하나를 사용하는 대신 해시 구현을 제공하기 위해 이 변수를 정의해야 합니다.

Added in version 3.4.

버전 3.15부터 사용 지원 중단(deprecated), 버전 3.19에서 제거 예정: 대신 내장된 해시 알고리즘 중 하나를 사용하십시오.

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)
…의 일부 안정 ABI 버전 3.16 이후로.

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

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

len 은 0 보다 크거나 같아야 합니다.

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

Added in version 3.14.

Py_hash_t PyObject_GenericHash(PyObject *obj)

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

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

Added in version 3.13.