📜  Python hash()函数与示例(1)

📅  最后修改于: 2023-12-03 14:45:58.555000             🧑  作者: Mango

Python hash()函数与示例

Python hash()函数用于获取给定对象的哈希值,通常用于对大型数据对象进行快速比较。该函数返回一个整数,表示对象的哈希值。

语法
hash(object)
  • object:必需,对象。
返回值

返回对象的哈希值(如果该对象可以哈希)。

示例
示例一:获取整数对象的哈希值
x = 10
print(hash(x))

输出:

10
示例二:获取字符串对象的哈希值
x = "hello world"
print(hash(x))

输出:

-1557613958998812812
示例三:获取列表对象的哈希值(不可哈希类型)
x = [1, 2, 3]
print(hash(x))

输出:

TypeError: unhashable type: 'list'

注意,列表是不可哈希类型,无法通过hash()函数获取其哈希值。

示例四:获取字典对象的哈希值
x = {"name": "Tom", "age": 20}
print(hash(frozenset(x.items())))

输出:

-5781298694718821300

由于字典是可变类型,无法直接获取其哈希值。因此,我们可以先将其转换为不可变类型frozenset,再获取其哈希值。

示例五:获取自定义对象的哈希值
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p1 = Person("Tom", 20)
print(hash(frozenset(p1.__dict__.items())))

输出:

-1714129823302635116

同样地,对于自定义类的对象,我们也可以将其__dict__属性转换为frozenset,再获取其哈希值。

注意事项
  • 对于可哈希类型的对象,在其生命周期内,其哈希值保持不变。
  • 对于不可哈希类型的对象(如列表、字典等),无法调用hash()函数获取其哈希值,会抛出TypeError异常。
  • 对于自定义类的对象,在重载__eq__()方法时,通常也需要重载__hash__()方法以配合哈希表的使用。