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 open()函数 open()函数是Python中用于打开文件的内置函数。它可以打开一个文件,并返回一个文件对象,以便对文件进行读取、写入、追加等操作。
Golang实现判断文件或文件夹是否存在 golang通过使用 os包中的Stat()函数和IsNotExist()函数即可判断文件或文件夹是否存在。
Rust字符串转换成数字类型:简单易懂的教程 在Rust编程中,将字符串转换为数字类型是一个常见的任务。无论您是处理用户输入,读取文件,还是与外部API交互,都可能需要将字符串转换为数字以进行进一步的计算或处理。在本文中,我们将深入探讨如何在Rust中执行这一任务,提供简单易懂的教程和示例代码。
Golang读取INI配置文件到结构体 本文将介绍Golang使用github.com/go-ini/ini包读取ini配置文件到结构体的方法。
将PySide6升级到最新版本 由于PySide6还在不断完善阶段,每隔一段时间我们就需要将PySide6升级到最新版本以使用更完善的功能;不论在Windows、Linux、还是macOS系统下,都只需要运行以下命令即可完成升级:
一条Linux命令让你看起来很忙还很酷 在Linux系统下,如果你想让你的终端看起来很忙,或者想在某人面前装酷,那么你一定需要这条命令来实现: