Python hash()函数

在 Python 中,hash()函数用于获取给定对象的哈希值(散列值),即对象的唯一标识符。

哈希值是一个整数,具有以下特点:

  • 对于同一个对象,在程序的不同执行期间,哈希值保持不变。
  • 对于不同的对象,哈希值可能相同,但概率很小。

hash()函数接受一个参数,即要计算哈希值的对象,返回该对象的哈希值(如果它有);

注意:不是所有对象都可以被哈希。只有不可变的对象才能被哈希,比如数字、字符串、元组等。可变的对象(如列表、字典、集合等)不能被哈希。如果尝试对可变对象进行哈希操作,将会抛出TypeError异常。

hash()函数示例


a = "hello world"
print(hash(a)) # 2181361957466243722(随机)

b = 1
print(hash(b)) # 1
c = 1.0
print(hash(c)) # 1

d = (1,2,3)
print(hash(d)) # 529344067295497451(随机)

e = [1,2,3]
f = {}
#print(hash(e)) # TypeError
#print(hash(f)) # TypeError

__hash__()方法

对象可以实现自己的__hash__()方法,但是需要注意的是,hash()根据机器的字长来截断返回值:


class myClass:

    def __init__(self,value):
        self.value = value

    def __hash__(self):
        return self.value

a = myClass(1234567890)
print(hash(a)) # 1234567890

a.value = 12345678901234567890
print(hash(a)) # 816463855166098135

#b = 12345678901234567890 & 0xffffffff  #只保留低32位
b = 12345678901234567890 & 0xffffffffffffffff  #只保留低64位
print(hash(b)) # 816463855166098135

如果对象自己实现了__hash__()方法,hash()函数会将__hash__()的返回值与0xffffffffffffffff进行位与操作;

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/python-built-in-functions/python-hash.html

分类: 计算机技术
推荐阅读:
PySide6 aboutQt()函数详细教程 PySide6.QtWidgets.QApplication类的aboutQt()函数用于显示一个关于Qt的简单消息框;该消息包括应用程序正在使用的Qt版本号;
使用Python求取前n个自然数的总和 给一个自然数n,使用Python求取前n个自然数的总和;
C语言strncpy()函数:复制字符串中的n个字符 strncpy()是C语言标准库中的一个字符串复制函数,用于将一个字符串的n个字符复制到另一个字符串中;
Python vars()函数 vars() 函数返回对象的属性和属性值的字典。其语法如下:
Python @classmethod装饰器 在 Python 中,@classmethod 是一个装饰器,用于将一个普通方法转换为类方法。装饰器是一种语法糖,它可以修改已有函数的行为而不修改其定义。@classmethod 装饰器通常用于在类中定义类方法。
Golang安装gin库的详细教程及错误解决方法 Gin是用Go(Golang)编写的Web框架。 它具有类似于martini的API,其性能比httprouter快40倍。 如果您需要性能和良好的生产率,您会喜欢Gin