为了账号安全,请及时绑定邮箱和手机立即绑定

Python中“hashable”是什么意思?

Python中“hashable”是什么意思?

慕标琳琳 2019-07-29 16:09:24
Python中“hashable”是什么意思?我试过搜索互联网,但找不到哈希的含义。当他们说对象是什么hashable或hashable objects它是什么意思?
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

Python术语表

如果一个对象具有一个在其生命周期内永远不会改变的哈希值(它需要一个__hash__()方法),并且可以与其他对象(它需要一个__eq__()或多个__cmp__()方法)进行比较,则该对象是可清除的。比较相等的可哈希对象必须具有相同的哈希值。

Hashability使对象可用作字典键和set成员,因为这些数据结构在内部使用哈希值。

所有Python的不可变内置对象都是可清除的,而没有可变容器(例如列表或字典)。默认情况下,作为用户定义类实例的对象是可清除的; 他们都比较不平等,他们的哈希值是他们的id()


查看完整回答
反对 回复 2019-07-29
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

任何不可变的东西(可变的意思,可能会改变)都可以进行哈希处理。除了要查找的哈希函数,如果一个类有它,例如。dir(tuple)并寻找__hash__方法,这里有一些例子


#x = hash(set([1,2])) #set unhashable

x = hash(frozenset([1,2])) #hashable

#x = hash(([1,2], [2,3])) #tuple of mutable objects, unhashable

x = hash((1,2,3)) #tuple of immutable objects, hashable

#x = hash()

#x = hash({1,2}) #list of mutable objects, unhashable

#x = hash([1,2,3]) #list of immutable objects, unhashable

不可变类型列表:


int, float, decimal, complex, bool, string, tuple, range, frozenset, bytes

可变类型列表:


list, dict, set, bytearray, user-defined classes


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 1398 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信