1. 程式人生 > >python 入門之 – hash(十七)

python 入門之 – hash(十七)

Hash ,一般翻譯成“雜湊”,也有直接音譯為 “雜湊” 的,就是把任意字串的輸入,通過雜湊演算法,變成固定長度的輸出,該輸出也叫雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來唯一的確定輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。

特徵:

Hash 值的計算過程是依據這個值的一些特徵計算的,這就要求被 Hash 的值必須固定,因此被 Hash 的值必須是不可變的

所以一般能被 Hash 的有 數字 字串 元祖,例如說 列表 這種可變的資料型別肯定是不能被 Hash

的。

hash 本身就是一個函式,如:hash()

我用 字串 來做一個測試:
在這裡插入圖片描述
可以看到,同一個字串一旦被 hash 了,之後再次 hash 是不會被改變的,但是一旦程式退出,再次 hash 這個字串,會生成另外一個 hash 值。

我再用 數字 來做一個測試:
在這裡插入圖片描述
可以看到 數字 型別被 hash 之後基本上和原數字一摸一樣

我在來試試 元祖
在這裡插入圖片描述
元祖hash 基本上和 字串 一摸一樣

上面三種是我已經學過的不能更改的資料型別,我現在來試一下如 陣列 這種可以被更改的資料型別看看被 hash 了之後是怎麼樣的:

在這裡插入圖片描述
如上,根據報錯資訊得出,能夠被更改的資料型別 list

是不能被 hash 的.