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.
-
Py_hash_t (*const hash)(const void*, Py_ssize_t)¶
-
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.