Trong động lực kinh doanh hiện đại ngày nay, có một ứng dụng cho mọi nhu cầu mà bạn có thể tưởng tượng. Có thể là để theo dõi các buổi bơi hàng tuần của bạn hoặc để tìm những nhà hàng tốt nhất trong thị trấn. Python là một ngôn ngữ mà nhiều ứng dụng trong số này được xây dựng vì nó tự hào có nhiều tính năng mà nó cung cấp. Bài viết này sẽ mở ra một khái niệm như vậy đó là Hash In Python.
Các gợi ý sau đây sẽ được đề cập trong bài viết này,
Vì vậy, chúng ta hãy bắt đầu sau đó,
Python là một trong những ngôn ngữ lập trình cấp cao phổ biến nhất hiện nay trong ngành. Được xây dựng trên nền tảng C, Python là một ngôn ngữ lập trình hướng đối tượng không chỉ rất linh hoạt mà còn có một số lượng lớn các tính năng cho phép các nhà phát triển tạo ra các ứng dụng cấp cao. Python là ngôn ngữ lập trình đi kèm với thư viện tích hợp có hàng trăm mô-đun và chức năng. Một trong số đó là mô-đun băm. Trong bài viết này, chúng ta sẽ thảo luận thêm về mô-đun băm, các tính năng của nó và cách bạn có thể sử dụng mô-đun này trong lập trình hàng ngày của mình
Trước khi chúng ta đi vào chi tiết của bài viết Hash In Python này, chúng ta hãy nhanh chóng hiểu chủ đề tiếp theo,
Phương thức băm trong Python là gì?
Phương thức băm trong Python là một mô-đun được sử dụng để trả về giá trị băm của một đối tượng. Trong lập trình, phương thức băm được sử dụng để trả về các giá trị số nguyên được sử dụng để so sánh các khóa từ điển bằng tính năng tra cứu từ điển. Khi được sử dụng, hàm này sẽ gọi __hash__[] của một đối tượng được đặt theo mặc định trong quá trình người dùng tạo đối tượng.
Cú pháp sử dụng phương thức băm như sau.
hash[object]
Các thông số của phương pháp băm
Phương thức băm dưới dạng mô-đun chỉ đưa vào một tham số duy nhất
Sự vật. Điều này đại diện cho đối tượng có giá trị băm cần được người dùng trả về, có thể ở dạng số nguyên, chuỗi hoặc float.
Giá trị trả về của phương thức băm
Khi được sử dụng, phương thức băm trả về giá trị băm của một đối tượng nếu có cùng giá trị. Nếu trong một tình huống nhất định, đối tượng có giá trị băm tùy chỉnh, thì phương thức sẽ cắt bớt giá trị băm thành kích thước của Py_ssize_t.
Hãy để chúng tôi tiếp tục với bài viết Hash In Python này và xem một chương trình mẫu, trước đó, một đề xuất sẽ đảm bảo bạn đã cài đặt tất cả phần mềm cần thiết,
Chương trình mẫu cho phương pháp băm
Để hiểu rõ hơn về chức năng và cách sử dụng phương thức băm, chúng ta hãy xem một vài ví dụ.
# hash for integer unchanged print['Hash for 181 is:', hash[181]] # hash for decimal print['Hash for 181.23 is:',hash[181.23]] # hash for string print['Hash for Python is:', hash['Python']]
đầu ra
Băm cho 181 là. 181
Băm cho 181. 23 là. 530343892119126197
Băm cho Python là. 3607259692854166150
Tiếp tục với bài viết này, chúng ta hãy xem phương pháp tiếp theo
Sử dụng phương pháp băm cho các đối tượng Tuple bất biến
# tuple of vowels vowels = ['a', 'e', 'i', 'o', 'u'] print['The hash is:', hash[vowels]]
Khi chạy, đầu ra của chương trình trên sẽ giống như thế này.
Băm là. -7033539107181453990
Hàm băm hoạt động như thế nào đối với các đối tượng tùy chỉnh?
Như đã đề cập trong đoạn trước, khi được sử dụng, phương thức băm sẽ gọi __hash__[] của một đối tượng. Điều này có nghĩa là bất kỳ đối tượng nào cũng có thể ghi đè giá trị băm tùy chỉnh cho một đối tượng.
Nhưng để có được giá trị băm chính xác, phương thức luôn cần trả về một số nguyên và do đó, người ta cần sử dụng cả __eq__[] cũng như __hash__[] để tìm giá trị tương tự
Tham khảo bảng bên dưới để hiểu cách triển khai cho các giá trị băm tùy chỉnh.
__eq__[]
__hash__[]
Sự miêu tả
[Nếu có thể thay đổi] Đã xác định
Không nên định nghĩa
Điều này yêu cầu giá trị băm của khóa là bất biến.
Được xác định [theo mặc định]
Được xác định [theo mặc định]
Tất cả các đối tượng được so sánh là không bằng nhau.
Không xác định
Không nên định nghĩa
Nếu __eq__[] không được xác định, thì hàm băm cũng không cần được xác định.
xác định
Không xác định
__hash__[] sẽ được đặt thành Không.
TypeError được nâng lên.
xác định
Giữ lại từ cha mẹ
__hash__ =. __hash__
xác định
Không muốn băm
__hash__ = Không
TypeError được nâng lên.
Một điều thú vị khác trong bài viết này về Hash In Python là triển khai Phương thức băm cho các đối tượng tùy chỉnh,
Phương pháp băm cho các đối tượng tùy chỉnh
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['The hash is:'] return hash[[self.age, self.name]] person = Person[23, 'Adam'] print[hash[person]]
Khi chạy, đầu ra của chương trình trên sẽ như thế này,
Băm là
5445254133660435902
Ghi chú. Đối với chương trình trên, phương thức __eq__[] không cần triển khai vì nó được tạo mặc định cho mọi đối tượng
Bây giờ chúng ta hãy xem một vài chương trình mẫu,
Chương trình mẫu 1
# Python 3 code to demonstrate # working of hash[] # initializing objects int_val = 4 str_val = 'PythonIsBest' flt_val = 24.56 # Printing the hash values. # Notice Integer value doesn't change # You'l have answer later in article. print ["The integer hash value is : " + str[hash[int_val]]] print ["The string hash value is : " + str[hash[str_val]]] print ["The float hash value is : " + str[hash[flt_val]]]
Đầu ra cho chương trình trên sẽ là,
Giá trị băm số nguyên là. 4
Giá trị băm của chuỗi là. 2063534490514258345
Giá trị băm float là. 1291272085159665688
Và điều này đưa chúng ta đến phần cuối cùng của bài viết này về Hash In Python,
Chương trình mẫu 2
# Python 3 code to demonstrate # property of hash[] # initializing objects # tuple are immutable tuple_val = [1, 2, 3, 4, 5] # list are mutable list_val = [1, 2, 3, 4, 5] # Printing the hash values. # Notice exception when trying # to convert mutable object print ["The tuple hash value is : " + str[hash[tuple_val]]] print ["The list hash value is : " + str[hash[list_val]]]
Đầu ra cho chương trình trên sẽ là,
Phần kết luận
Phương thức băm là một trong những mô-đun hữu ích nhất trong thư viện Python. Bây giờ bạn đã biết chức năng và cách sử dụng của nó, chúng tôi hy vọng rằng bạn sẽ sử dụng nó thường xuyên hơn trong công việc viết mã hàng ngày của mình. Vì vậy, điều này kết thúc bài viết này, tôi hy vọng bạn đã học được điều gì đó hay và mới
Để có kiến thức chuyên sâu về Python cùng với các ứng dụng khác nhau của nó, bạn có thể đăng ký ngay để tham gia khóa đào tạo Python trực tiếp với sự hỗ trợ 24/7 và quyền truy cập trọn đời
Có một câu hỏi cho chúng tôi?