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

分类: 计算机技术
推荐阅读:
Visual Studio Code 配置Python开发环境 首先,请确保你的电脑已经安装了Python,如没有请先安装,建议 3.5.0以上版本;其次,确保你的电脑已经安装了 Visual Studio Code 这个代码编辑器;
no new variables on left side of :=错误解决方法 Go语言中使用:=进行赋值导致no new variables on left side of :=错误,其原因是:=左侧没有新变量;
Matlab如何设置默认工作目录? 要设置 MATLAB 的默认工作目录,可以按照以下步骤进行操作:
PySide6 QWidget更改窗口标题 PySide6.QtWidgets.QWidget类的成员函数setWindowTitle()用于为窗口更改标题;
使用PySide6创建Hello World程序 本文将展示PySide6的hello world程序;程序将创建一个主窗体,在窗体上创建一个按钮,点击按钮将弹出Hello world的消息;
Golang实现线性搜索算法(Linear Search) 本文将使用Go语言实现线性搜索算法(Linear Search);