Hàm băm là bất kỳ hàm nào ánh xạ đầu vào có kích thước khác nhau thành đầu ra có kích thước cố định. Các giá trị được trả về bởi hàm băm được gọi là giá trị băm, giá trị băm, mã băm, tổng kiểm tra hoặc thông báo băm
Tùy thuộc vào thuật toán băm được sử dụng, hai đầu vào có thể được ánh xạ vào cùng một đầu ra. Điều này được gọi là va chạm băm. Một ví dụ về một vụ va chạm như vậy được hiển thị bên dưới
Đợi đã, điều đó sẽ quá dễ dàng. Mọi ký tự của chuỗi phải được chuyển đổi thành giá trị hex của mã ascii của nó, sau đó kết quả sẽ là tổng của các số trong chuỗi hex (bỏ qua các chữ cái)
Mô-đun này tạo màu dựa trên đối tượng, bằng cách tính toán giá trị màu dựa trên giá trị băm cho đối tượng. Điều này có nghĩa là kết quả là xác định. cùng một giá trị sẽ luôn dẫn đến cùng một màu (miễn là hàm băm vẫn mang tính xác định)
Mô-đun này là một cổng của thư viện Javascript color-hash. Nó hỗ trợ Python 3. 6+
Bắt đầu nhanh
>>> from colorhash import ColorHash >>> c = ColorHash('Hello World') >>> c.hsl (131, 0.65, 0.5) >>> c.rgb (45, 210, 75) >>> c.hex '#2dd24b'Cài đặt
Nó được lưu trữ trên PyPI
pip install colorhashNhật ký thay đổi
- băm màu 1. 2. 0 (2022-10-17)
- Sử dụng gõ hỗ trợ python3. 6
- băm màu 1. 1. 0 (2022-09-01)
- thêm bài kiểm tra
- Thêm hướng dẫn cài đặt
- băm màu 1. 0. 4 (2021-11-30)
- Chỉ hỗ trợ cho python 3. 6+
- thêm bài kiểm tra
- băm màu 1. 0. 3 (2020-12-04)
- Hỗ trợ thả cho python 2
- Bàn giao bảo trì công trình
- băm màu 1. 0. 2 (2016-07-08)
- Thêm chức năng crc32_hash và đặt hashfunc mặc định cho chức năng đó. Nó không hoàn toàn tương thích ngược, nhưng tôi không muốn làm hỏng phiên bản này nhiều vì không thực hiện nghiên cứu của mình
- băm màu 1. 0. 0 (2016-07-07)
Giấy phép
Bản quyền (c) 2016 Felix Krull f_krull@gmx. de
Đây là một cổng của thư viện Javascript 'băm màu' được
Bản quyền (c) 2015 Zeno Zeng
Theo đây, quyền được cấp miễn phí cho bất kỳ người nào có được bản sao của phần mềm này và các tệp tài liệu liên quan ("Phần mềm"), để xử lý Phần mềm mà không bị hạn chế, bao gồm nhưng không giới hạn các quyền sử dụng, sao chép, sửa đổi, hợp nhất
Thông báo bản quyền ở trên và thông báo cấp phép này sẽ được bao gồm trong tất cả các bản sao hoặc phần quan trọng của Phần mềm
PHẦN MỀM ĐƯỢC CUNG CẤP "NGUYÊN TRẠNG", KHÔNG CÓ BẢO ĐẢM DƯỚI BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN CÁC BẢO ĐẢM VỀ KHẢ NĂNG BÁN ĐƯỢC, TÍNH PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ VÀ KHÔNG VI PHẠM. TRONG BẤT KỲ TRƯỜNG HỢP NÀO TÁC GIẢ HOẶC NGƯỜI GIỮ BẢN QUYỀN SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ VỀ BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC TRÁCH NHIỆM PHÁP LÝ KHÁC NÀO, DÙ TRONG MỘT HÀNH ĐỘNG HỢP ĐỒNG, NGOẠI TỆ HOẶC CÁCH NÀO KHÁC, PHÁT SINH TỪ, NGOÀI HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC CÁC GIAO DỊCH KHÁC TRONG
Hàm hex() trong Python được sử dụng để tạo giá trị hex của đối số số nguyên. Nó nhận một đối số số nguyên và trả về một số nguyên được chuyển đổi thành chuỗi thập lục phân. Trường hợp muốn lấy giá trị thập lục phân của float thì dùng float. hàm hex()
Ví dụ hàm hex() trong Python
# Calling function result = hex(1) # integer value result2 = hex(342) # Displaying result print(result) print(result2)đầu ra
0x1 0x156Hàm băm Python()
Hàm hash() trong Python được sử dụng để lấy giá trị băm của một đối tượng. Python tính toán giá trị băm bằng cách sử dụng thuật toán băm. Các giá trị băm là số nguyên và được sử dụng để so sánh các khóa từ điển trong quá trình tra cứu từ điển. Chúng tôi chỉ có thể băm các loại được đưa ra dưới đây
Phương thức hash() trả về giá trị băm của một đối tượng nếu nó có một. Giá trị băm chỉ là số nguyên được sử dụng để so sánh các khóa từ điển trong quá trình tra cứu từ điển nhanh chóng
Thí dụ
text = 'Python Programming'# compute the hash value of text hash_value = hash(text)
print(hash_value) # Output: -966697084172663693hàm băm() Cú pháp
Cú pháp của phương thức hash() là
hash(object)hash() Tham số
Phương thức hash() nhận một tham số duy nhất
- đối tượng - đối tượng có giá trị băm sẽ được trả về (số nguyên, chuỗi, số float)
hash() Giá trị trả về
Phương thức hash() trả về giá trị băm của một đối tượng
ví dụ 1. Hash() hoạt động như thế nào trong Python?
# hash for integer unchangedprint('Hash for 181 is:', hash(181))
# hash for decimalprint('Hash for 181.23 is:',hash(181.23))
# hash for stringprint('Hash for Python is:', hash('Python'))
đầu ra
Hash for 181 is: 181 Hash for 181.23 is: 530343892119126197 Hash for Python is: 2230730083538390373ví dụ 2. hash() cho đối tượng tuple bất biến?
Phương thức hash() chỉ hoạt động đối với các đối tượng không thay đổi dưới dạng tuple
________số 8_______đầu ra
The hash is: -695778075465126279Hash() hoạt động như thế nào đối với các đối tượng tùy chỉnh?
Như đã nêu ở trên, phương thức hash() gọi nội bộ phương thức hash(object)4. Vì vậy, bất kỳ đối tượng nào cũng có thể ghi đè hash(object)4 cho các giá trị băm tùy chỉnh
Nhưng để triển khai hàm băm chính xác, hash(object)4 phải luôn trả về một số nguyên. Và, cả hai phương pháp hash(object)7 và hash(object)4 phải được thực hiện
Dưới đây là các trường hợp ghi đè đúng hash(object)4
__eq__()__hash__()Des mô tảXác định (theo mặc định)Xác định (theo mặc định)Nếu để nguyên như vậy, tất cả các đối tượng so sánh không bằng nhau (ngoại trừ chính chúng)(Nếu có thể thay đổi) Đã xác địnhKhông nên xác địnhViệc triển khai bộ sưu tập có thể băm yêu cầu giá trị băm của khóa là bất biếnKhông được xác địnhKhông nên xác địnhNếu . Các phiên bản DefinedNot DefineClass sẽ không thể sử dụng được dưới dạng bộ sưu tập có thể băm. ngầm định __hash__() được đặt thành # hash for integer unchanged
print('Hash for 181 is:', hash(181))
# hash for decimalprint('Hash for 181.23 is:',hash(181.23))
# hash for stringprint('Hash for Python is:', hash('Python'))
2. Tăng __6_______3 ngoại lệ nếu cố truy xuất hàm băm. DefinedRetain from Parent_______6_______4DefinedKhông muốn băm# hash for integer unchangedprint('Hash for 181 is:', hash(181))
# hash for decimalprint('Hash for 181.23 is:',hash(181.23))
# hash for stringprint('Hash for Python is:', hash('Python'))
5. Tăng ngoại lệ TypeError nếu cố truy xuất hàm bămví dụ 3. hash() cho Đối tượng tùy chỉnh bằng cách ghi đè __hash__()
class Person: def __init__(self, age, name): self.age = age self.name = name def __eq__(self, other): return self.age == other.age and self.name == other.namedef __hash__(self): print('The hash is:') return hash((self.age, self.name))
person = Person(23, 'Adam') print(hash(person))đầu ra
The hash is: 3785419240612877014Ghi chú. Bạn không cần phải triển khai phương thức hash(object)7 cho hàm băm vì nó được tạo theo mặc định cho tất cả các đối tượng