PyHash API

همچنین عضو PyTypeObject.tp_hash و درهم‌سازی انواع عددی را ببینید.

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_EXTERNAL

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

Py_HASH_EXTERNAL دارای مقدار 0 است و پیاده‌سازی هش ارائه‌شده توسط برنامه‌ای که پایتون را تعبیه کرده است نشان می‌دهد؛ نگاه کنید به PyHash_Func.

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

اضافه شده در نسخه‌ی 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_Func

هنگامی که پایتون با Py_HASH_ALGORITHM تنظیم‌شده روی Py_HASH_EXTERNAL ساخته می‌شود، برنامه‌ای که پایتون را تعبیه کرده است باید این متغیر را تعریف کند تا به جای استفاده از یکی از الگوریتم‌های هش توکار پایتون، یک پیاده‌سازی هش را فراهم کند.

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

منسوخ شده از نسخه‌ی 3.15, در نسخه‌ی 3.19 حذف خواهد شد: به‌جای آن از یکی از الگوریتم‌های هش توکار استفاده کنید.

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)
قسمتی از ABI پایدار از نسخه‌ی 3.16.

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

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

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

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

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

Py_hash_t PyObject_GenericHash(PyObject *obj)

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

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

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