2026/4/3 14:18:59
网站建设
项目流程
网站建设与管理量化考细则,用prestashop做网站,海南省海口市建设厅网站,柳州十一冶建设集团网站Python3 operator 模块全面学习教程 #xff08;适合 Python 入门到中级开发者#xff0c;2025–2026 实用视角#xff09;
operator 是 Python 标准库中非常实用但经常被忽视的一个模块#xff0c;它把常见的运算符#xff08;、-、*、、and、getitem、len 等#xff0…Python3 operator 模块全面学习教程适合 Python 入门到中级开发者2025–2026 实用视角operator是 Python 标准库中非常实用但经常被忽视的一个模块它把常见的运算符、-、*、、and、getitem、len 等变成了函数形式极大方便了函数式编程、高阶函数、排序 key、map、reduce、functools 等场景。一、为什么需要 operator 模块最常见的两种写法对比# 传统写法lambda 较多sorted(users,keylambdau:u.age)list(map(lambdax:x[1],items))reduce(lambdax,y:xy,numbers,0)# 使用 operator 写法更简洁、可读性更好fromoperatorimportattrgetter,itemgetter,addsorted(users,keyattrgetter(age))list(map(itemgetter(1),items))reduce(add,numbers,0)核心优势性能略优避免创建 lambda 函数代码更简洁、可读与functools.partial、itertools等配合极佳可直接作为高阶函数参数二、operator 模块核心函数分类2025 常用1. 算术运算最常用函数等价运算符示例代码典型使用场景add(a,b)a badd(3,5)→ 8reduce 加法sub(a,b)a - bmul(a,b)a * breduce 乘法truediv(a,b)a / bPython 3 默认真除法floordiv(a,b)a // b地板除mod(a,b)a % bpow(a,b)a ** bpow(2,10)→ 1024neg(obj)-obj取负pos(obj)obj几乎不用abs(obj)abs(obj)等价于内置 abs()2. 比较运算非常常用函数等价运算符典型使用场景eq(a,b)a bfilter、groupbyne(a,b)a ! blt(a,b)a bsorted key、heapqle(a,b)a bgt(a,b)a bge(a,b)a b3. 逻辑运算使用频率中等函数等价运算符注意事项and_(a,b)a and b返回的是后者不是 True/Falseor_(a,b)a or b返回的是前者或后者not_(obj)not obj重要提醒operator.and_和and的行为完全一致都是短路求值并返回原值而不是布尔值。4. 序列/容器操作非常非常常用函数作用典型用法itemgetter(*items)获取容器指定位置/键的值sorted(lst, keyitemgetter(1))attrgetter(*attrs)获取对象指定属性sorted(users, keyattrgetter(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,keyitemgetter(score,age),reverseTrue)# 错误写法# 正确写法需要组合多个 itemgetter 或使用 lambdafromfunctoolsimportcmp_to_keysorted(students,keylambdax:(-x[score],x[age]))# 传统写法# operator 优雅写法推荐fromoperatorimportitemgetter,negsorted(students,keylambdax:(neg(x[score]),x[age]))更推荐的现代写法Python 3.10fromoperatorimportitemgetter# 多字段 部分反序get_scoreitemgetter(score)get_ageitemgetter(age)sorted(students,keylambdax:(-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] clength_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 reverseFalse★★★8truediv / floordiv函数式除法★★9setitem / delitem函数式修改容器★★10concatreduce 拼接序列★★练习建议由浅入深用itemgetter实现按字典中某个 key 排序用attrgetter对对象列表多字段排序分数降序 年龄升序用methodcallermap把一堆字符串全部转小写用reduceadd/mul实现求和、求积尝试用operator重写一个曾经写过很多 lambda 的 sorted / max / min 场景如果你想看某个具体场景的完整代码示例比如多字段复杂排序、groupby 配合、与 pandas 结合等可以直接告诉我我可以立刻给出针对性代码。