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と比較する数値です。 組み込みのハッシュアルゴリズムは、configure の--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は 0 以上 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¶
PyHASH_MODULUSのPの指数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.
-
Py_hash_t (*const hash)(const void*, Py_ssize_t)¶
-
PyHash_FuncDef PyHash_Func¶
Py_HASH_ALGORITHMをPy_HASH_EXTERNALに設定して Python をビルドする場合、Python を組み込むアプリケーションはこの変数を定義する必要があります。 これにより、Python の組み込みハッシュアルゴリズムの代わりに使うハッシュ実装を提供します。Added in version 3.4.
バージョン 3.15 で非推奨、バージョン 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)¶
アドレス
ptrを先頭とする長さlenバイトのバッファのハッシュ値を計算して返します。 このハッシュ値は、bytes、memoryviewなど バッファプロトコル を実装する組み込みオブジェクトのハッシュ値と一致することが保証されています。tp_richcompare関数でほかのオブジェクトのバッファと比較する不変オブジェクトに、ハッシュ計算を実装する場合に使ってください。lenは0以上でなければなりません。この関数は常に成功します。
Added in version 3.14.
-
Py_hash_t PyObject_GenericHash(PyObject *obj)¶
型オブジェクトの
tp_hashスロットに設定するための汎用ハッシュ関数です。 結果はオブジェクトの同一性だけで決まります。CPython では
Py_HashPointer()と同等です。Added in version 3.13.