如果一個對象在自己的生命周期中有一哈希值(hash value)是不可改變的,那么它就是可哈希的(hashable)的,因為這些數據結構內置了哈希值,每個可哈希的對象都內置了__hash__方法,所以可哈希的對象可以通過哈希值進行對比,也可以作為字典的鍵值和作為set函數的參數。所有python中所有不可改變的的對象(imutable objects)都是可哈希的,比如字符串,元組,也就是說可改變的容器如字典,列表不可哈希(unhashable)。我們用戶所定義的類的實例對象默認是可哈希的(hashable),它們都是唯一的,而hash值也就是它們的id()。
哈希(散列?whatever)是一個將大體量數據轉化為很小數據的過程,甚至可以僅僅是一個數字,以便我們可以用在固定的時間復雜度下查詢它,所以,哈希對高效的算法和數據結構很重要。
