PyHash API

همچنین عضو PyTypeObject.tp_hash و Hashing of numeric types را ببینید.

type Py_hash_t

نوع مقدار هش: عدد صحیح علامت‌دار.

اضافه شده در نسخه‌ی 3.2.

type Py_uhash_t

نوع مقدار هش: عدد صحیح بدون علامت.

اضافه شده در نسخه‌ی 3.2.

Py_HASH_ALGORITHM

یک مقدار عددی که الگوریتم هش‌کردنِ str، bytes و memoryview را نشان می‌دهد.

نام الگوریتم توسط sys.hash_info.algorithm در دسترس قرار می‌گیرد.

اضافه شده در نسخه‌ی 3.4.

Py_HASH_FNV
Py_HASH_SIPHASH24
Py_HASH_SIPHASH13

مقادیر عددی برای مقایسه با Py_HASH_ALGORITHM به‌منظور تعیین اینکه کدام الگوریتم برای هش‌کردن استفاده می‌شود. الگوریتم هش را می‌توان از طریق گزینه‌ی --with-hash-algorithm در configure پیکربندی کرد.

اضافه شده در نسخه‌ی 3.4: افزودن Py_HASH_FNV و Py_HASH_SIPHASH24.

اضافه شده در نسخه‌ی 3.11: افزودن Py_HASH_SIPHASH13.

Py_HASH_CUTOFF

بافرهایی که طول آن‌ها در بازه‌ی [1, Py_HASH_CUTOFF) است، به‌جای الگوریتم توصیف‌شده توسط Py_HASH_ALGORITHM، با استفاده از DJBX33A هش می‌شوند.

  • مقدار Py_HASH_CUTOFF برابر با ۰، بهینه‌سازی را غیرفعال می‌کند.

  • Py_HASH_CUTOFF باید نامنفی و کمتر یا مساوی ۷ باشد.

پلتفرم‌های ۳۲ بیتی باید از آستانه‌ای کوچک‌تر از پلتفرم‌های ۶۴ بیتی استفاده کنند، زیرا در آن‌ها ایجاد رشته‌های برخوردکننده آسان‌تر است. آستانه‌ی ۷ در پلتفرم‌های ۶۴ بیتی و ۵ در پلتفرم‌های ۳۲ بیتی باید حاشیه‌ی ایمنی مناسبی فراهم کند.

این با ثابت sys.hash_info.cutoff مطابقت دارد.

اضافه شده در نسخه‌ی 3.4.

PyHASH_MODULUS

عدد اول مرسن P = 2**n -1 که در طرح هش عددی استفاده می‌شود.

این معادل ثابت sys.hash_info.modulus است.

اضافه شده در نسخه‌ی 3.13.

PyHASH_BITS

توان n از P در PyHASH_MODULUS.

اضافه شده در نسخه‌ی 3.13.

PyHASH_MULTIPLIER

ضریب اول استفاده‌شده در هش رشته و هش‌های مختلف دیگر.

اضافه شده در نسخه‌ی 3.13.

PyHASH_INF

مقدار هشی که برای بی‌نهایت مثبت برگردانده می‌شود.

این با ثابت sys.hash_info.inf مطابقت دارد.

اضافه شده در نسخه‌ی 3.13.

PyHASH_IMAG

ضریب استفاده‌شده برای بخش موهومی یک عدد مختلط.

این با ثابت sys.hash_info.imag مطابقت دارد.

اضافه شده در نسخه‌ی 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 مطابق است.

اضافه شده در نسخه‌ی 3.4.

PyHash_FuncDef *PyHash_GetFuncDef(void)

گرفتن تعریف تابع هش.

همچنین ملاحظه نمائید

PEP 456 "Secure and interchangeable hash algorithm".

اضافه شده در نسخه‌ی 3.4.

Py_hash_t Py_HashPointer(const void *ptr)

هش کردن یک مقدار اشاره‌گر: مقدار اشاره‌گر را به‌عنوان یک عدد صحیح پردازش می‌کند (به‌طور داخلی آن را به uintptr_t قالب‌ریزی می‌کند). اشاره‌گر ارجاع‌زدایی (dereference) نمی‌شود.

این تابع نمی‌تواند شکست بخورد: نمی‌تواند -1 را برگرداند.

اضافه شده در نسخه‌ی 3.13.

Py_hash_t Py_HashBuffer(const void *ptr, Py_ssize_t len)

مقدار هش یک بافر به طول len بایت که از نشانی ptr آغاز می‌شود را محاسبه کرده و برمی‌گرداند. تضمین می‌شود که این هش با هش bytes، memoryview و سایر اشیاء توکاری که پروتکل بافر را پیاده‌سازی می‌کنند، مطابقت داشته باشد.

برای پیاده‌سازی هش برای اشیاء تغییرناپذیری که تابع tp_richcompare آن‌ها با بافر شیء دیگری مقایسه می‌کند، از این تابع استفاده کنید.

len باید بزرگ‌تر یا مساوی 0 باشد.

این تابع همیشه با موفقیت اجرا می‌شود.

اضافه شده در نسخه‌ی 3.14.

Py_hash_t PyObject_GenericHash(PyObject *obj)

تابع هش عمومی‌ای که برای قرار گرفتن در جایگاه tp_hash شیء نوع در نظر گرفته شده است. نتیجه‌ی آن تنها به همانی شیء بستگی دارد.

در سی‌پایتون، این معادل Py_HashPointer() است.

اضافه شده در نسخه‌ی 3.13.