我刚刚学习了Python中的hash
方法,我想知道:对象与其哈希值之间的关系是什么?例如:
>>>hash('a')
1567799509
python对字符串'a'
执行了哪些操作以到达1567799509
?我知道这和十六进制有关,但是得到哈希值的公式到底是什么呢?
同时,我运行了以下代码:
a='a'
b="b"
c='c'
print (hash(a))
print(hash (b))
print(hash(c))
我第一次运行代码时得到了这个:
226468662
-199440459
-37886412
我第二次得到这个:
-121857168
-774818061
-915254158
我收到这个第三次了:
1567799509
1439930198
1846375895
我的问题是:哈希值改变吗?如果是,为什么?
哈希函数用于比较会话中的两个对象是否相同。
Return the hash value for the given object.
Two objects that compare equal must also have the same hash value, but the
reverse is not necessarily true.
它只会在同一个python运行会话中返回相同的值。
要在多次运行中获得相同的哈希值,您需要使用此链接提供的hashlib库中的加密哈希值:https://docs.python.org/3/library/hashlib.html?highlight=hashlib