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

分类: 计算机技术
推荐阅读:
Python读写JSON文件、解析JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式;本文将通过多个例子讲解在Python中如何读写json文件,如何解析JSON内容,以及如何将JSON对象与Python字典相互转换;
Golang Web编程入门示例 Go语言内置了Web服务;net/http 标准库中包含有关HTTP协议的所有功能。这其中包括HTTP客户端和HTTP服务端,在本文中,你将发现使用GO创建一个可在浏览器中查看的WEB服务程序非常简单。
Nginx+Golang+Gin实现简单的web服务 本文将实现Nginx+Golang+Gin实现web服务,如何安装 gin 框架本文就不说了;
Python将16进制HASH转换成二进制 将16进制的Hash(比如MD5、SHA1等值)转换位二进制的字符串其实很容易,只需要掌握这几个函数:
Python 多线程的运用 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。
Python join()方法 在使用Python处理字符串时,您可能需要将较小的块连接在一起形成一个字符串;Python中的字符串方法join()可以帮助您完成这个任务;