Python 的内置函数 hash

作者:IMPYLH日期:2025/11/7

Python 内建函数列表 > Python 的内置函数 hash

Python 的内置函数 hash() 是一个非常有用的工具函数,主要用于获取对象的哈希值。哈希值是一个固定长度的整数,代表该对象的唯一标识。在 Python 中,hash() 函数常用于字典键值、集合元素等场景,因为这些数据结构内部依赖哈希值来快速查找和比较对象。

1. 基本用法

  • hash() 函数接受一个对象作为参数,返回该对象的哈希值。
  • 示例:
1print(hash("hello"))  # 输出字符串 "hello" 的哈希值  
2print(hash(123))      # 输出整数 123 的哈希值  

2. 哈希值的特性

  • 不可变对象:只有不可变对象(如字符串、元组、数字等)才能被哈希。如果尝试哈希可变对象(如列表、字典),会引发 TypeError
    • 示例:
    1hash([1, 2, 3])  # TypeError: unhashable type: 'list'  
  • 一致性:在同一个 Python 进程中,同一对象的哈希值保持不变。
  • 不同对象可能相同:不同对象可能有相同的哈希值(哈希碰撞),但概率较低。

3. 应用场景

  • 字典键值:字典的键必须是可哈希的,因为 Python 使用哈希值快速定位键值对。
    • 示例:
    1d = {}  
    2d["key"] = "value"  # "key" 必须是可哈希的  
  • 集合元素:集合存储唯一元素,依赖哈希值判断元素是否重复。
    • 示例:
    1s = {1, 2, 3}  # 集合中的元素必须是可哈希的  

4. 自定义对象的哈希

  • 如果自定义类需要支持哈希,可以重写 __hash__() 方法。通常还需要重写 __eq__() 方法以确保哈希一致性。
    • 示例:
    1class Person:  
    2    def __init__(self, name, age):  
    3        self.name = name  
    4        self.age = age  
    5    def __hash__(self):  
    6        return hash((self.name, self.age))  # 基于元组生成哈希值  
    7    def __eq__(self, other):  
    8        return (self.name, self.age) == (other.name, other.age)  
    9p = Person("Alice", 25)  
    10print(hash(p))  

5. 注意事项

  • 哈希值在不同 Python 版本或不同机器上可能不同(如 Python 3.3+ 引入了随机哈希种子以防止攻击)。
  • 哈希值不保证唯一性,仅用于快速比较和查找。

hash() 函数是 Python 中高效数据操作的重要工具,合理利用可以显著提升程序性能。


Python 的内置函数 hash》 是转载文章,点击查看原文


相关推荐


从写原生JS到玩转框架:我走过的那些弯路和顿悟时刻
良山有风来2025/11/3

还记得刚入行时,我对着满屏的document.getElementById发誓要征服前端。三年后,当我第一次用Vue在半小时内完成过去需要两天的工作时,我才明白:从前端小白到大佬,差的不是代码量,而是思维模式的彻底转变。 今天,我想和你分享这段旅程中的关键转折点。无论你是正在学习前端的新手,还是已经有一定经验的开发者,相信这些感悟都能帮你少走很多弯路。 从“怎么做”到“做什么”:思维的根本转变 刚学JavaScript时,我的脑子里装满了“怎么做”。比如要做一个待办事项应用,我的思路是这样的:


Redis(95)Redis的防火墙配置如何设置?
Victor3562025/10/31

设置Redis的防火墙配置是确保Redis实例安全的一个关键步骤。正确配置防火墙可以防止未经授权的访问,减少潜在的安全漏洞。以下是如何在不同环境中进行防火墙配置的详细指南。 1. 使用iptables配置防火墙(Linux) 步骤 1: 安装iptables 大多数现代Linux发行版都预装了iptables。如果没有安装,可以使用以下命令进行安装: sudo apt-get install iptables # 在Debian/Ubuntu sudo yum install iptables


MySQL 索引原理
洲覆2025/10/28

文章目录 一、索引1.1 索引分类1.2 主键选择🌟 二、约束2.1 外键约束2.2 约束与索引的区别 三、索引实现原理3.1 索引存储层级结构3.2 B+ 树B+ 树层高问题🌟关于自增 ID 四、索引类型4.1 聚集索引4.2 辅助索引 一、索引 在数据库中,索引是提高查询性能的关键机制。它相当于书籍的目录,通过索引可以快速定位到数据在磁盘中的位置,从而减少 I/O 操作。对于 InnoDB 而言,索引不仅影响查询性能,还决定了数据在物理层的存储结构。 1


Python 的内置函数 delattr
IMPYLH2025/10/25

Python 内建函数列表 > Python 的内置函数 delattr def delattr(obj, name:str): ''' 删除指定的属性 :param obj: 一个对象 :param name: 要删除的属性的名字 ''' Python 的内置函数 delattr 用于动态删除对象的属性。该函数需要两个参数:第一个参数是目标对象,第二个参数是要删除的属性名称(字符串形式)。 示例 运行 class Person: d


c++算法题目总结
July尘2025/10/23

5分题 001 Hello World(输出语句) #include<stdio.h> int main(){ printf("Hello World!"); return 0; } 004计算摄氏温度(简单计算) #include<stdio.h> int main(){ int F; scanf("%d",&F); int C = 5 * (F-32) / 9; printf("Celsius = %d",C);


【自然资源】自然资源系统业务全梳理,点赞收藏
jr4282025/10/22

自然资源系统业务全梳理 结合为自然部门的业务和多方资料来源,对自然资源业务体系和信息化做了梳理,使测绘地理信息行业在自然资源领域如何落地变得具象化。 自然资源管理业务框架的共性特征 分为基础性业务、核心业务与综合性业务3类。 基础性业务包括调查监测,确权登记,主要是摸清家底,确定权属,统一底图底数,由原来部门分治管理时土地、森林等分头调查确权统一到以三调为基础的自然资源一张底图, 测绘和地理信息业务主要是建立自然资源及国土空间数据基准,进行数据采集,并提供信息化技术支撑。 核心业务主要包括所有权


将 EasySQLite 解决方案文件格式从 .sln 升级为更简洁的 .slnx
追逐时光者2025/10/20

前言 EasySQLite 是一个 .NET 9 操作 SQLite 入门到实战详细教程,主要是对学校班级,学生信息进行管理维护。本文的主要内容是将 EasySQLite 项目解决方案文件格式从 .sln 格式升级为更简洁的 .slnx 格式。 GitHub开源地址:github.com/YSGStudyHar… 选型、开发、部署详细教程 第一天、SQLite 简介 第二天、在 Windows 上配置 SQLite环境 第三天、SQLite快速入门 第四天、EasySQLite前后端项目框


汽车免拆诊断案例 | 2014 款宝马 M4 车冷起动后发动机抖动
虹科Pico汽车示波器2025/10/19

故障现象  一辆2014款宝马M4车,搭载S55B30A发动机,累计行驶里程约为9.4万km。车主反映,冷起动后发动机抖动严重,且组合仪表上的发动机故障灯异常点亮;行驶一段距离后熄火再重新起动发动机,发动机工作恢复正常。 故障诊断 接车后试车,发动机工作正常。用故障检测仪检测,发动机控制单元(DME)中存储有气缸5和气缸6间歇失火的故障代码(图1)。 图1 DME中存储的故障代码 将车停放一晚,第二天早上试车,同时用虹科Pico汽车示波器测量相关信号波形。由图2可知,冷起动后发


最强流式渲染,没有之一
Simon_He2025/10/18

vue-markdown-renderer 阮一峰推荐,性能比vercel出品streamdown 好 100 倍,性能以及渲染表现一定是市面上所有流式渲染中最好的一档,视频中会去讲解为什么,视频比较干,建议仔细看完到最后,希望对于ai相关的小伙伴有一定的收获,谢谢~ 下面有详细分析市面上的 ai 渲染,以及 vercel 的 streamdown 和如何优化的细节,在面对现阶段 ai 的岗位越来越多,作为前端,掌握 ai 流式渲染,也可以成为你面试的亮点 【最强流式渲染没有之一】 www.bi


开源 ETL(Extract,Transform,Load)工具之Apache Hop
西京刀客2025/10/16

文章目录 开源 ETL(Extract,Transform,Load)工具之Apache HopApache Hop起源与背景什么是Apache Hopapache hop 核心概念Tools(工具)Item types(条目类型)Projects(项目)关键概念对比与应用建议 术语对照下载安装使用在 Hop GUI 中创建 Pipeline(步骤) Apache Hop 的局限Apache Hop 的外部插件仓库(hop-plugins)参考 开源 ETL(Extrac

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0