如何在CPython2.7中计算某个特定字符串的哈希值?
例如,这段代码:
print hash('abcde' * 1000)
即使在我重新启动Python进程后再次尝试(我做了很多次),返回相同的值。
所以,似乎字符串的id()
(内存地址)没有在这个计算中使用,对吗?怎么样?
答案 0 :(得分:10)
哈希值不依赖于内存位置,而是依赖于对象本身的内容。来自documentation:
返回对象的哈希值(如果有)。哈希值是整数。它们用于在字典查找期间快速比较字典键。比较相等的数字值具有相同的哈希值(即使它们具有不同的类型,如1和1.0的情况)。
您可以在此处查看hash
类str
方法的CPython实现的源代码:
https://svn.python.org/projects/python/trunk/Objects/stringobject.c