在python中为什么hash()函数在给定一个int时返回精确的输入值

问题描述

在python中玩hash()时,发现给出一个int(小于18位),hash()将返回与输入的完全相同的值。这对我来说没有多大意义。

为什么要这样设计?

另外一个有趣的事情是,当给 -1-2 时,它会返回 -2(即碰撞)

>>> hash(2)
2
>>> hash(1)
1
>>> hash(0)
0
>>> hash(-1)
-2
>>> hash(-2)
-2
>>> hash(-3)
-3

python 版本是 3.6.12

已编辑:

关键是为什么它是这样设计的,而不是像 md5 这样的东西。使 hash(x)!=x 甚至是整数?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)