{site_name}

{site_name}

🌜 搜索

Python中的哈希(hash)是指把任意长度的输入(又称为预映射, pre-i

Python 𝄐 0
python中has_key,python hashcode,python可哈希的有哪些,python中什么叫可哈希,python中哈希用法,python的哈希
Python中的哈希(hash)是指把任意长度的输入(又称为预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是哈希值。可哈希对象(hashable object)是指能够被哈希函数处理,并且具有唯一标识的对象。在Python中,不可变的基本数据类型(如数字、字符串、元组等)都是可哈希的,而可变的对象(如列表、字典等)则是不可哈希的。

具体来说,Python要求一个对象必须满足以下两个条件,才能被认为是可哈希的:

1. 对象的 hash 值是固定的,即在对象的生命周期中保持不变;
2. 对象可以和其它对象比较相等,即通过 __eq__() 方法判断是否相等,如果相等则它们的 hash 值也必须相等。

下面是一些示例,展示了哪些对象是可哈希的,哪些是不可哈希的:

python
# 可哈希的对象
hash(42) # 整数是可哈希的
hash(3.14) # 浮点数也是可哈希的
hash('hello') # 字符串是可哈希的
hash(('hello', 'world')) # 元组(元素也必须可哈希)是可哈希的

# 不可哈希的对象
hash([1, 2, 3]) # 列表是不可哈希的
hash({'age': 18, 'name': 'Alice'}) # 字典也是不可哈希的
hash(set([1, 2, 3])) # 集合同样也是不可哈希的


需要注意的是,虽然 None 是一个对象,并且它的 hash 值是固定的,但是它不满足第二个条件,因此它不能被认为是可哈希的。