PyHash API

Xem thêm thành viên PyTypeObject.tp_hashBă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, bytesmemoryview.

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_ALGORITHM nhằ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_FNVPy_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ởi Py_HASH_ALGORITHM.

  • Zz000zz bằng 0 sẽ vô hiệu hóa tối ưu hóa.

  • Py_HASH_CUTOFF phả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ũ n của P trong PyHASH_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.

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_t nộ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, memoryview và 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_richcompare so 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_hash củ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.