字符串上的Python hash()函数

时间:2016-10-28 04:25:40

标签: python hash

如何在CPython2.7中计算某个特定字符串的哈希值?

例如,这段代码:

print hash('abcde' * 1000)
即使在我重新启动Python进程后再次尝试(我做了很多次),

返回相同的值。

所以,似乎字符串的id()(内存地址)没有在这个计算中使用,对吗?怎么样?

1 个答案:

答案 0 :(得分:10)

哈希值不依赖于内存位置,而是依赖于对象本身的内容。来自documentation

  

返回对象的哈希值(如果有)。哈希值是整数。它们用于在字典查找期间快速比较字典键。比较相等的数字值具有相同的哈希值(即使它们具有不同的类型,如1和1.0的情况)。

您可以在此处查看hashstr方法的CPython实现的源代码:

https://svn.python.org/projects/python/trunk/Objects/stringobject.c