hash
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
特征
hash值的计算过程是依据这个值的一些特征计算的,这就要求被hash的值必须固定,因此被hash的值是不可变的
不可变类型:
数字、字符串、元组
可变类型:
列表
语法
names = ("jack","tom","lily",1,2,3,3,2,2,2) print(hash(names)) print(hash(123)) print(hash("abc"))
输出
-4400841986320872870
123
-1069225786115799872
在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关
用途
文件签名
md5加密(网站中的用户名和密码(明文加密为密文。不能反解))
密码验证
hash不能保证每个映射都是一一对应,有时可能会出现不同值对应相同,所以通常用到hash要解决hash冲突。