news 2026/6/1 15:50:54

Python入门:Python3 operator模块全面学习教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python入门:Python3 operator模块全面学习教程

Python3 operator 模块全面学习教程
(适合 Python 入门到中级开发者,2025–2026 实用视角)

operator是 Python 标准库中非常实用但经常被忽视的一个模块,它把常见的运算符(+、-、*、==、and、getitem、len 等)变成了函数形式,极大方便了函数式编程、高阶函数、排序 key、map、reduce、functools 等场景。

一、为什么需要 operator 模块?

最常见的两种写法对比:

# 传统写法(lambda 较多)sorted(users,key=lambdau:u.age)list(map(lambdax:x[1],items))reduce(lambdax,y:x+y,numbers,0)# 使用 operator 写法(更简洁、可读性更好)fromoperatorimportattrgetter,itemgetter,addsorted(users,key=attrgetter('age'))list(map(itemgetter(1),items))reduce(add,numbers,0)

核心优势

  • 性能略优(避免创建 lambda 函数)
  • 代码更简洁、可读
  • functools.partialitertools等配合极佳
  • 可直接作为高阶函数参数

二、operator 模块核心函数分类(2025 常用)

1. 算术运算(最常用)
函数等价运算符示例代码典型使用场景
add(a,b)a + badd(3,5)→ 8reduce 加法
sub(a,b)a - b
mul(a,b)a * breduce 乘法
truediv(a,b)a / bPython 3 默认真除法
floordiv(a,b)a // b地板除
mod(a,b)a % b
pow(a,b)a ** bpow(2,10)→ 1024
neg(obj)-obj取负
pos(obj)+obj(几乎不用)
abs(obj)abs(obj)等价于内置 abs()
2. 比较运算(非常常用)
函数等价运算符典型使用场景
eq(a,b)a == bfilter、groupby
ne(a,b)a != b
lt(a,b)a < bsorted key、heapq
le(a,b)a <= b
gt(a,b)a > b
ge(a,b)a >= b
3. 逻辑运算(使用频率中等)
函数等价运算符注意事项
and_(a,b)a and b返回的是后者(不是 True/False)
or_(a,b)a or b返回的是前者或后者
not_(obj)not obj

重要提醒operator.and_and的行为完全一致,都是短路求值并返回原值,而不是布尔值。

4. 序列/容器操作(非常非常常用)
函数作用典型用法
itemgetter(*items)获取容器指定位置/键的值sorted(lst, key=itemgetter(1))
attrgetter(*attrs)获取对象指定属性sorted(users, key=attrgetter('age'))
methodcaller(name, /, *args, **kwargs)调用对象的方法methodcaller('lower')('Hello')→ ‘hello’

itemgetter 与 attrgetter 对比(最常考)

fromoperatorimportitemgetter,attrgetter students=[{'name':'Tom','score':98,'age':19},{'name':'Jerry','score':85,'age':20},]# 多字段排序(先按分数降序,相同分数按年龄升序)sorted(students,key=itemgetter('score','age'),reverse=True)# 错误写法# 正确写法:需要组合多个 itemgetter 或使用 lambdafromfunctoolsimportcmp_to_keysorted(students,key=lambdax:(-x['score'],x['age']))# 传统写法# operator 优雅写法(推荐)fromoperatorimportitemgetter,negsorted(students,key=lambdax:(neg(x['score']),x['age']))

更推荐的现代写法(Python 3.10+):

fromoperatorimportitemgetter# 多字段 + 部分反序get_score=itemgetter('score')get_age=itemgetter('age')sorted(students,key=lambdax:(-get_score(x),get_age(x)))
5. 位运算(使用较少,但很纯粹)
函数运算符说明
and_(a,b)&按位与
or_(a,b)|按位或
xor(a,b)^按位异或
inv(obj)~按位取反
lshift(a,b)<<左移
rshift(a,b)>>右移
6. 其他实用函数(进阶)
函数作用典型场景
concat(a,b)a + b(序列拼接)reduce 拼接列表
iconcat(a,b)a += b(就地拼接)
delitem(a,b)del a[b]
setitem(a,b,c)a[b] = c
length_hint(obj)获取容器大致长度(C++风格)预分配内存时有用
indexOf(a,b)a.index(b)
countOf(a,b)a.count(b)

总结表格:最值得记住的 10 个 operator 函数(2025–2026 面试/实战 Top10)

排名函数主要用途出现频率
1itemgetter按元组/列表/字典的第 n 项排序、取值★★★★★
2attrgetter按对象属性排序、取值★★★★★
3methodcaller调用对象方法(常用于 map)★★★★
4add / mulreduce 求和、求积★★★★
5lt / gt / eq自定义比较函数★★★
6and_ / or_函数式逻辑运算★★★
7neg反转排序(配合 sorted reverse=False)★★★
8truediv / floordiv函数式除法★★
9setitem / delitem函数式修改容器★★
10concatreduce 拼接序列★★

练习建议(由浅入深)

  1. itemgetter实现按字典中某个 key 排序
  2. attrgetter对对象列表多字段排序(分数降序 + 年龄升序)
  3. methodcaller+map把一堆字符串全部转小写
  4. reduce+add/mul实现求和、求积
  5. 尝试用operator重写一个曾经写过很多 lambda 的 sorted / max / min 场景

如果你想看某个具体场景的完整代码示例(比如多字段复杂排序、groupby 配合、与 pandas 结合等),可以直接告诉我,我可以立刻给出针对性代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/24 22:58:39

Nodejs+vueapp音乐推荐系统付费免费原型的设计小程序

文章目录系统概述核心功能设计技术实现要点数据库设计原型设计工具注意事项--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Node.jsVue.js 音乐推荐系统小程序结合付费与免费模式&#xff0c;通过个性化推…

作者头像 李华
网站建设 2026/5/30 7:25:44

Nodejs+vue安卓的驾校练车考试预约管理系统小程序

文章目录系统概述核心功能模块技术架构特色与优化应用价值--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 该系统基于Node.js后端和Vue.js前端开发&#xff0c;结合移动端技术&#xff08;如Uniapp或微信…

作者头像 李华
网站建设 2026/5/29 10:31:06

SELECT * FROM orders WHERE id > 1000000 ORDER BY id LIMIT 10;的庖丁解牛

SELECT * FROM orders WHERE id > 1000000 ORDER BY id LIMIT 10; 是 高性能分页查询的典范&#xff0c;它通过 游标分页&#xff08;Cursor-based Pagination&#xff09; 避免了传统 OFFSET 的性能陷阱。一、执行机制&#xff1a;为什么高效&#xff1f; ▶ 1. 执行计划解…

作者头像 李华
网站建设 2026/5/2 13:12:51

利用Fleet驾驭多集群Elastic部署:统一管理与数据本地化

提升全球运营&#xff1a;利用Fleet驾驭多集群Elastic部署 在当今的全球性企业中&#xff0c;分布式基础设施已成为常态而非例外。组织跨越各大洲运营&#xff0c;并受到客户邻近性和法规要求的驱动。对于Elastic Stack而言&#xff0c;这种现实通常转化为多集群部署模式&…

作者头像 李华
网站建设 2026/5/29 13:41:37

MariaDB 备份与恢复完整指南

文章目录 MariaDB 备份与恢复完整指南 一、环境准备与测试数据创建 1. 检查 MariaDB 状态 2. 创建测试数据库和数据 二、使用 mysqldump 进行逻辑备份 1. 基本备份命令 2. 高级备份选项 3. 自动备份脚本 三、使用 mariadb-backup 进行物理备份 1. 安装 mariadb-backup 2. 完整备…

作者头像 李华