Python函式每日一講 - 一文徹底讓你明白hash函式的使用

Daniel的思辨悟發表於2024-02-29

引言

在 Python 中,hash() 函式是一個常用的函式,用於獲取物件的雜湊值。雜湊值是根據物件的內容計算出來的一個唯一的識別符號,可以用來快速比較物件是否相等。

語句概覽

hash() 函式的語法如下:

hash(object)

其中,object 是要獲取雜湊值的物件。

函式例項

例1: 獲取數字的雜湊值

num_hash = hash(123)
print("雜湊整數:", num_hash) # 輸出結果:雜湊整數: 123

在這個例子中,我們使用 hash() 函式計算了整數 num_hash 的雜湊值。由於整數的雜湊值就是它自身的值,所以 hash(num_hash) 返回的結果就是整數 num_hash 的值。

例2: 獲取字串的雜湊值

str_hash = hash("Hello")
print("雜湊字串:", str_hash) # 輸出結果:雜湊字串: 7497853327944133605

在這個例子中,我們使用 hash() 函式計算了字串 str_hash 的雜湊值。字串的雜湊值是根據字串的內容計算得到的,因此不同的字串可能會有相同的雜湊值。

例3: 獲取元組的雜湊值

tuple_hash = hash((1, 2, 3))
print("雜湊元組:", tuple_hash) # 輸出結果:雜湊元組: 529344067295497451

在這個例子中,我們使用 hash() 函式計算了元組 tuple_hash 的雜湊值。元組的雜湊值是根據元組中的所有元素的雜湊值計算得到的,因此不同的元組可能會有相同的雜湊值。

例4: 獲取集合的雜湊值

set_hash = hash({1, 2, 3})
print("雜湊集合:", set_hash) # 輸出結果:雜湊集合: TypeError: unhashable type: 'set'

在這個例子中,我們使用 hash() 函式計算了集合 set_hash 的雜湊值。集合的雜湊值是根據集合中的所有元素的雜湊值計算得到的,因此不同的集合可能會有相同的雜湊值。

例5: 獲取自定義物件的雜湊值

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 30)
person_hash = hash(person)
print("雜湊值:", person_hash) # 輸出結果:雜湊值: 141625287949

在這個例子中,我們使用 hash() 函式計算了物件 Person 的雜湊值。

應用場景

  • 資料唯一性驗證:雜湊值可以作為資料的唯一識別符號,用於快速比較物件是否相等。
  • 雜湊資料結構:在使用雜湊表等資料結構時,雜湊值可以作為鍵值的索引,提高資料訪問效率。

注意事項

  • hash() 函式對不同型別的物件有不同的計算規則,一般情況下,相同內容的物件會產生相同的雜湊值,但有時也會出現雜湊衝突的情況,導致不同內容的物件產生相同的雜湊值。
  • 不可變物件的雜湊值在物件生命週期內保持不變,可變物件的雜湊值在物件內容改變後可能會發生變化。

結語
透過本文的介紹,相信大家已經瞭解了 hash() 函式的基本用法和一些注意事項。在實際應用中,可以根據具體場景靈活運用 hash() 函式,提高程式碼的效率和可讀性。

相關文章