首页Python【Python内置函数】h...

【Python内置函数】hash()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

hash() 函数用于获取一个对象的哈希值(如果有的话)。哈希值是一个整数,通常用于快速比较和查找操作,例如在字典和集合中。
需要注意的是,只有不可变类型的对象才能被哈希。可变对象(如列表、字典等)没有哈希值,因为它们的内容可以改变,而哈希值需要保持不变。尝试对可变对象使用 hash() 会引发 TypeError
另外,比较相等的数值具有相同的哈希值,即使它们的类型不同,例如 1 和 1.0。

hash() 函数的基本语法如下:

hash(object)
参数说明:
  • object:需要计算哈希值的对象,该对象必须支持哈希操作,即它必须定义了 __hash__() 方法。

返回值:

hash() 函数返回一个整数,即对象的哈希值。如果对象不支持哈希操作(没有定义 __hash__() 方法),则抛出 TypeError

对于自定义的 __hash__() 方法,hash() 函数会根据主机的位数来截断返回值。这意味着如果 __hash__() 方法返回一个非常大的整数,hash() 可能会返回一个截断后的值。

02
使用

下面是一些使用 hash() 函数的示例:

  • 示例 1:基本使用

# 1、对字符串进行哈希
s = "hello"
print(hash(s))
# 输出哈希值

# 2、对整数进行哈希
i = 1234
print(hash(i))
# 输出哈希值

# 3、对浮点数进行哈希
f = 3.14
print(hash(f))
# 输出哈希值

# 4、对元组进行哈希(元组中的元素也必须是不可变的)
t = (1, "two", 3.0)
print(hash(t))
# 输出哈希值

# 5、不可哈希的对象(会抛出TypeError)
lst = [1, 2, 3]
try:
    hash(lst)  # 列表是不可哈希的
except TypeError as e:
    print(e)
# 输出: unhashable type: 'list'


  • 示例 2:自定义类的哈希

如果要实现自定义类的哈希,需要实现__hash__()方法方法必须返回一个整数。

class MyClass:
    def __init__(self, value):
        self.value = value
    
    def __hash__(self):
        return hash(self.value)

# 示例
obj1 = MyClass(10)
obj2 = MyClass(100)
print(hash(obj1))  # 输出:10
print(hash(obj2))  # 输出:100


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments