PyHash API¶
همچنین عضو PyTypeObject.tp_hash و درهمسازی انواع عددی را ببینید.
-
type Py_hash_t¶
نوع مقدار هش: عدد صحیح علامتدار.
-
type Py_uhash_t¶
نوع مقدار هش: عدد صحیح بدون علامت.
-
Py_HASH_ALGORITHM¶
یک مقدار عددی که الگوریتم هشکردنِ str، bytes و memoryview را نشان میدهد.
نام الگوریتم توسط sys.hash_info.algorithm در دسترس قرار میگیرد.
-
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 هش میشوند.
پلتفرمهای ۳۲ بیتی باید از آستانهای کوچکتر از پلتفرمهای ۶۴ بیتی استفاده کنند، زیرا در آنها ایجاد رشتههای برخوردکننده آسانتر است. آستانهی ۷ در پلتفرمهای ۶۴ بیتی و ۵ در پلتفرمهای ۳۲ بیتی باید حاشیهی ایمنی مناسبی فراهم کند.
این با ثابت sys.hash_info.cutoff مطابقت دارد.
-
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 مطابق است.
-
PyHash_FuncDef PyHash_Func¶
هنگامی که پایتون با Py_HASH_ALGORITHM تنظیمشده روی Py_HASH_EXTERNAL ساخته میشود، برنامهای که پایتون را تعبیه کرده است باید این متغیر را تعریف کند تا به جای استفاده از یکی از الگوریتمهای هش توکار پایتون، یک پیادهسازی هش را فراهم کند.
منسوخ شده از نسخهی 3.15, در نسخهی 3.19 حذف خواهد شد: بهجای آن از یکی از الگوریتمهای هش توکار استفاده کنید.
-
PyHash_FuncDef *PyHash_GetFuncDef(void)¶
گرفتن تعریف تابع هش.
همچنین ببینید
PEP 456 "Secure and interchangeable hash algorithm".
-
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 شیء نوع در نظر گرفته شده است. نتیجهی آن تنها به همانی شیء بستگی دارد.
اضافه شده در نسخهی 3.13.
©
حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به
تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا
اشکالی یافتید؟
ساخته شده با
Sphinx 9.1.0.