Hàm hash() trong Python

0

Trong Python, các hàm hàm băm () sẽ trả về giá trị băm của đối tượng nếu có. Hàm băm thường lấy bất kỳ đầu vào nội dung nào và sau đó sử dụng các thuật toán để tạo đầu ra có độ dài cụ thể.

Trong bài viết này, chúng ta sẽ tìm hiểu về các chức năng hàm băm (), cú pháp và cách sử dụng hàm hàm băm () trong Python.

☑️ Xem thêm:  Cách khắc phục một số lỗi khi cập nhật Windows 10

Cú pháp của hàm hash () trong Python:

hash(đối tượng)

Tham số băm ()

Hàm hàm băm () Nhận một tham số duy nhất:

  • Đối tượng: Có bất cứ điều gì để có được giá trị băm (số nguyên, chuỗi, số thực …)

Giá trị được trả về từ hàm hash ()

Hàm hash () trả về giá trị băm của đối tượng (nếu có).

Nếu đối tượng có chức năng __hash __ () tùy chỉnh, chức năng hàm băm () sẽ cắt giá trị trả về thành kích thước Py_ssize_t.

Hàm hash () trong Python trả về giá trị băm của đối tượng (nếu có).
Hàm hash () trong Python trả về giá trị băm của đối tượng (nếu có).

Xem thêm: Hàm memoryview () trong Python

Hàm hash () trong Python hoạt động như thế nào?

Ví dụ 1: Cách hash () hoạt động trong Python

#hash cho số nguyên không thay đổi
 print('Hash của 181 là:', hash (181))
 
 #hash cho số thập phân
 print('Hash cho 181.23 là:',hash(181.23))
 
 #hash cho chuỗi
 print('Hash cho Sharenhanh.com là:', hash('Sharenhanh.com'))

Khi chạy chương trình, kết quả trả về là:

Hash của 181 là: 181
Hash cho 181.23 là: 530343892119126197
Hash cho Sharenhanh.com là: 4213641416257495992

Ví dụ 2: hàm băm () cho tuple đối tượng bất biến

Hàm hàm băm () Chỉ hoạt động với các đối tượng bất biến như tuples. Tuple trong Python là một kiểu dữ liệu được sử dụng để lưu trữ các đối tượng không thay đổi sau này (như các hằng số).

#tuple của Sharenhanh
Sharenhanh = ('S', 'h', 'a', 'r','e')
print('Hash của Sharenhanh là:', hash(Sharenhanh))

Khi chạy chương trình, kết quả trả về là:

Hash của Sharenhanh là: 3991579433972788497

Xem thêm: Hàm property () trong Python

Hàm hash () xử lý các đối tượng tùy chỉnh như thế nào?

Như đã đề cập ở trên, chức năng hàm băm () gọi một chức năng __hash __ () nội bộ. Do đó, bất kỳ đối tượng có thể được ghi đè __hash __ () để có một giá trị băm tùy chỉnh.

☑️ Xem thêm:  Top 3 ứng dụng xem trực tiếp bóng đá online hay nhất

Nhưng để thực hiện chức năng băm chính xác, __hash __ () Luôn luôn trả về số nguyên như kết quả. Và, cả hai chức năng __eq __ ()__hash __ () phải được thực hiện

Sau đây là trường hợp áp dụng băm cho các đối tượng tùy chỉnh

Trường hợp áp dụng băm cho các đối tượng tùy chỉnh

__eq_ () __hash __ () Giải thích
Chỉ định (theo mặc định) Chỉ định (theo mặc định) Nếu còn lại, 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 định Không được chỉ định Quá trình áp dụng bộ sưu tập giá trị băm yêu cầu các giá trị băm của Key là bất biến
không xác định Không được chỉ định Nếu __eq __ () không được chỉ định, __hash __ () sẽ không được chỉ định
xác định không xác định Các trường lớp sẽ không sử dụng bộ sưu tập giá trị có thể băm. __hash __ () sẽ được đặt thành Không có. Tăng ngoại lệ TypeError nếu cố gắng triển khai lại hàm băm
xác định Kiểm soát bởi lớp cha __hash__ = .__ băm__
xác định Không muốn thực hiện băm __hash__ = Không có. Tăng ngoại lệ TypeError nếu cố gắng triển khai lại hàm băm

Xem thêm: Hàm oct () trong Python là gì?

Ví dụ 3: hash () cho các đố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.name
 
     def __hash__(self):
         print('Giá trị hash là:')
         return hash((self.age, self.name))
 
 Sharenhanh= Person(23, 'Adam')
 print(hash(Sharenhanh))

Khi chạy chương trình, kết quả trả về là:

Giá trị hash là:
4236629274686265525

Ghi chú: Bạn không cần thực thi chức năng __eq __ () cho quá trình băm vì hàm này được thực thi theo mặc định cho tất cả các đối tượng.

Leave A Reply

Your email address will not be published.