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