python中的可哈希和不可哈希
python 中的每一个对象都有一个哈希值,哈希值是一个固定长度的整数,它通常用于快速比较对象的相等性。
如果在对象的生命周期里该对象的哈希值从未改变,那么这个对象是可哈希的(hashable),也称为不可变的。如果一个对象的哈希值是不稳定的,则为不可哈希,是可变的。
可以用hash函数检测一个对象是否是可哈希的。在Python中,如果一个对象是可哈希的,那么我们可以使用内置的hash()函数来获取其哈希值。如果一个对象是不可哈希的,那么调用hash()函数将会出现TypeError。
可哈希指的是一个对象是否可以被哈希函数处理并得到一个哈希值,该值在对象的生命周期内是不变的。
一般来说,不可变的数据类型(如整数int、浮点数float、布尔值bool、字符串str、元组tuple等)是可哈希的,而可变的数据类型(如列表list、字典dict、集合set等)通常是不可哈希的。
# -*- coding: utf-8 -*-
value = 1
try:
ret = hash(value)
print(ret)
except TypeError as e:
print(f"{value} not hash: ", e)
data = [1, 2, 3]
try:
ret = hash(data)
print(ret)
except TypeError as e:
print(f"{data} not hash: ", e)
"""
运行结果:
1
[1, 2, 3] not hash: unhashable type: 'list'
"""
注意,如果自定义类的实例是不可变的,并且实现了hash()方法和eq()方法,那么这个类的实例也是可哈希的。
end
原文地址:https://blog.csdn.net/hutaotaotao/article/details/139197313
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!