PyHash API¶
Xem thêm thành viên PyTypeObject.tp_hash và Băm các kiểu số.
-
type Py_hash_t¶
Loại giá trị băm: số nguyên có dấu.
Added in version 3.2.
-
type Py_uhash_t¶
Loại giá trị băm: số nguyên không dấu.
Added in version 3.2.
-
Py_HASH_ALGORITHM¶
Một giá trị số biểu thị thuật toán băm
str,bytesvàmemoryview.Tên thuật toán được hiển thị bởi
sys.hash_info.algorithm.Added in version 3.4.
-
Py_HASH_FNV¶
-
Py_HASH_SIPHASH24¶
-
Py_HASH_SIPHASH13¶
Các giá trị số để so sánh với
Py_HASH_ALGORITHMnhằm xác định thuật toán nào được sử dụng để băm. Thuật toán băm có thể được cấu hình thông qua tùy chọn configure--with-hash-algorithm.Added in version 3.4: Thêm
Py_HASH_FNVvàPy_HASH_SIPHASH24.Added in version 3.11: Thêm
Py_HASH_SIPHASH13.
-
Py_HASH_CUTOFF¶
Bộ đệm có độ dài trong phạm vi
[1, Py_HASH_CUTOFF)được băm bằng DJBX33A thay vì thuật toán được mô tả bởiPy_HASH_ALGORITHM.Zz000zz bằng 0 sẽ vô hiệu hóa tối ưu hóa.
Py_HASH_CUTOFFphải không âm và nhỏ hơn hoặc bằng 7.
Nền tảng 32 bit nên sử dụng giới hạn nhỏ hơn nền tảng 64 bit vì việc tạo các chuỗi xung đột sẽ dễ dàng hơn. Mức giới hạn 7 trên nền tảng 64 bit và 5 trên nền tảng 32 bit sẽ mang lại biên độ an toàn khá.
Điều này tương ứng với hằng số
sys.hash_info.cutoff.Added in version 3.4.
-
PyHASH_MODULUS¶
Mersenne prime
P = 2**n -1, được sử dụng cho sơ đồ băm số.Điều này tương ứng với hằng số
sys.hash_info.modulus.Added in version 3.13.
-
PyHASH_BITS¶
Số mũ
ncủaPtrongPyHASH_MODULUS.Added in version 3.13.
-
PyHASH_MULTIPLIER¶
Hệ số nhân chính được sử dụng trong chuỗi và các hàm băm khác.
Added in version 3.13.
-
PyHASH_INF¶
Giá trị băm được trả về là dương vô cùng.
Điều này tương ứng với hằng số
sys.hash_info.inf.Added in version 3.13.
-
PyHASH_IMAG¶
Số nhân dùng cho phần ảo của số phức.
Điều này tương ứng với hằng số
sys.hash_info.imag.Added in version 3.13.
-
type PyHash_FuncDef¶
Định nghĩa hàm băm được sử dụng bởi
PyHash_GetFuncDef().-
Py_hash_t (*const hash)(const void*, Py_ssize_t)¶
Hàm băm.
-
const char *name¶
Tên hàm băm (chuỗi được mã hóa UTF-8).
Điều này tương ứng với hằng số
sys.hash_info.algorithm.
-
const int hash_bits¶
Kích thước bên trong của giá trị băm tính bằng bit.
Điều này tương ứng với hằng số
sys.hash_info.hash_bits.
-
const int seed_bits¶
Kích thước của hạt giống đầu vào tính bằng bit.
Điều này tương ứng với hằng số
sys.hash_info.seed_bits.
Added in version 3.4.
-
Py_hash_t (*const hash)(const void*, Py_ssize_t)¶
-
PyHash_FuncDef *PyHash_GetFuncDef(void)¶
Lấy định nghĩa hàm băm.
Xem thêm
PEP 456 "Thuật toán băm an toàn và có thể thay thế được".
Added in version 3.4.
-
Py_hash_t Py_HashPointer(const void *ptr)¶
Băm giá trị con trỏ: xử lý giá trị con trỏ dưới dạng số nguyên (chuyển nó thành
uintptr_tnội bộ). Con trỏ không bị hủy đăng ký.Hàm không thể bị lỗi: nó không thể trả về
-1.Added in version 3.13.
-
Py_hash_t Py_HashBuffer(const void *ptr, Py_ssize_t len)¶
Tính toán và trả về giá trị băm của bộ đệm len byte bắt đầu từ địa chỉ ptr. Hàm băm được đảm bảo khớp với hàm băm của
bytes,memoryviewvà các đối tượng tích hợp khác triển khai buffer protocol.Sử dụng hàm này để triển khai băm cho các đối tượng bất biến có hàm
tp_richcompareso sánh với bộ đệm của đối tượng khác.len phải lớn hơn hoặc bằng
0.Chức năng này luôn thành công.
Added in version 3.14.
-
Py_hash_t PyObject_GenericHash(PyObject *obj)¶
Hàm băm chung có nghĩa là được đặt vào vị trí
tp_hashcủa đối tượng loại. Kết quả của nó chỉ phụ thuộc vào danh tính của đối tượng.Trong CPython, nó tương đương với
Py_HashPointer().Added in version 3.13.