关注

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

在这里插入图片描述

在这里插入图片描述

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

Python入门:Python3 operator 模块全面学习教程,本文为 Python3 operator 模块的学习教程,首先指出 Python3 移除 Python2 的 cmp () 函数,operator 模块可替代其实现比较功能,介绍了该模块中与比较运算符对应的 lt ()、le () 等常用方法及双下划线方法,建议优先用无下划线方法,并通过数字、字符串、列表的比较实例展示用法。接着阐述模块提供的与内置运算符对应的高效函数,涵盖数学、序列、逻辑等运算类型,列出常用运算符函数与对应运算符的关系,结合实例演示数学运算、序列操作、逻辑与按位运算等功能。最后总结 operator 模块的核心价值,强调掌握其使用能让 Python 代码更简洁高效,适用于频繁运算或对象比较场景。

在这里插入图片描述

前言

    Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。

在这里插入图片描述


在这里插入图片描述

🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。

🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。

🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。

🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。

🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。


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


🌐 前篇文章咱们练习了 Python3 pip包管理工具全面学习教程 ,如果忘记了,可以去重温一下,不停的重复敲击基础代码,有助于让你更加熟练掌握一门语言。今天咱们继续学习 ,Python3 operator 模块全面学习教程,下面开始吧!

在Python 2.x版本中,我们可以使用cmp()函数轻松比较两个列表、数字或字符串等对象的大小关系。但升级到Python 3.X版本后,cmp()函数被移除。若仍需实现比较功能,官方推荐引入operator模块。该模块不仅能满足对象比较需求,还提供了与Python内置运算符对应的高效率函数,涵盖逻辑运算、数学运算以及序列运算等多种类型,适用于各类对象操作场景。本文将带大家全面学习operator模块的使用方法。

一、对象比较功能:替代cmp()的核心能力

operator模块提供了一系列用于对象比较的方法,这些方法与Python中的比较运算符一一对应,且适用于所有对象。

1.1 常用比较方法及对应关系

比较方法对应运算符功能说明
operator.lt(a, b)a < b判断a是否小于b,返回布尔值
operator.le(a, b)a <= b判断a是否小于等于b,返回布尔值
operator.eq(a, b)a == b判断a是否等于b,返回布尔值
operator.ne(a, b)a != b判断a是否不等于b,返回布尔值
operator.ge(a, b)a >= b判断a是否大于等于b,返回布尔值
operator.gt(a, b)a > b判断a是否大于b,返回布尔值

同时,模块还保留了带有双下划线的方法(如operator.__lt__(a, b)operator.__le__(a, b)等),这是为了向后兼容性。但为了代码表述更清晰,建议优先使用没有双下划线的方法。

1.2 比较功能实例演示

下面通过实例分别展示对数字、字符串和列表的比较操作:

# 导入 operator 模块
import operator

# 1. 数字比较
x = 10
y = 20
print("数字比较:")
print("x:", x, ", y:", y)
print("operator.lt(x,y): ", operator.lt(x, y))  # 输出True,10<20
print("operator.gt(y,x): ", operator.gt(y, x))  # 输出True,20>10
print("operator.eq(x,x): ", operator.eq(x, x))  # 输出True,10==10
print("operator.ne(y,y): ", operator.ne(y, y))  # 输出False,20!=20不成立
print("operator.le(x,y): ", operator.le(x, y))  # 输出True,10<=20
print("operator.ge(y,x): ", operator.ge(y, x))  # 输出True,20>=10
print()

# 2. 字符串比较(按字符ASCII码顺序比较)
x = "Google"
y = "xcLeigh"
print("字符串比较:")
print("x:", x, ", y:", y)
print("operator.lt(x,y): ", operator.lt(x, y))  # 输出True,'G'的ASCII码小于'R'
print("operator.gt(y,x): ", operator.gt(y, x))  # 输出True,'R'的ASCII码大于'G'
print("operator.eq(x,x): ", operator.eq(x, x))  # 输出True,相同字符串相等
print("operator.ne(y,y): ", operator.ne(y, y))  # 输出False,相同字符串不等不成立
print("operator.le(x,y): ", operator.le(x, y))  # 输出True,'G'<= 'R'
print("operator.ge(y,x): ", operator.ge(y, x))  # 输出True,'R'>= 'G'
print()

# 3. 列表比较(按元素依次比较,直到找到不同元素或比较完所有元素)
a = [1, 2]
b = [2, 3]
c = [2, 3]
print("列表比较:")
print("operator.eq(a,b): ", operator.eq(a, b))  # 输出False,a[0]=1 < b[0]=2,整体列表不等
print("operator.eq(c,b): ", operator.eq(c, b))  # 输出True,c和b的元素完全相同
print()

# 查看比较方法的返回值类型(均为bool类型)
print("operator.lt(x,y)返回值类型: ", type(operator.lt(x, y)))  # 输出<class 'bool'>

上述代码运行后,输出结果如下:

在这里插入图片描述

数字比较:
x: 10 , y: 20
operator.lt(x,y):  True
operator.gt(y,x):  True
operator.eq(x,x):  True
operator.ne(y,y):  False
operator.le(x,y):  True
operator.ge(y,x):  True

字符串比较:
x: Google , y: xcLeigh
operator.lt(x,y):  True
operator.gt(y,x):  True
operator.eq(x,x):  True
operator.ne(y,y):  False
operator.le(x,y):  True
operator.ge(y,x):  True

列表比较:
operator.eq(a,b):  False
operator.eq(c,b):  True

operator.lt(x,y)返回值类型:  <class 'bool'>

二、运算符函数:高效替代内置运算符

operator模块的另一大核心功能是提供了与Python内置运算符对应的高效率函数,涵盖数学运算、序列运算、逻辑运算等多个类别。使用这些函数,不仅能实现与内置运算符相同的功能,还能在某些场景(如函数式编程)中更灵活地调用。

2.1 常用运算符函数及对应关系

运算类型对应运算符operator函数功能说明
加法a + badd(a, b)计算a与b的和
字符串/序列拼接seq1 + seq2concat(seq1, seq2)将seq2拼接在seq1之后
包含测试obj in seqcontains(seq, obj)判断obj是否在seq中,返回布尔值
除法(真除法)a / btruediv(a, b)计算a除以b的结果,保留小数
除法(地板除)a // bfloordiv(a, b)计算a除以b的结果,向下取整
按位与a & band_(a, b)对a和b进行按位与运算
按位异或a ^ bxor(a, b)对a和b进行按位异或运算
按位取反~ainvert(a)对a进行按位取反运算
按位或`ab`or_(a, b)
取幂a ** bpow(a, b)计算a的b次方
标识判断a is bis_(a, b)判断a和b是否为同一对象,返回布尔值
标识否定判断a is not bis_not(a, b)判断a和b是否不为同一对象,返回布尔值
索引赋值obj[k] = vsetitem(obj, k, v)将obj中索引k处的值设为v
索引删除del obj[k]delitem(obj, k)删除obj中索引k处的元素
索引取值obj[k]getitem(obj, k)获取obj中索引k处的值
左移a << blshift(a, b)将a的二进制表示向左移b位
取模a % bmod(a, b)计算a除以b的余数
乘法a * bmul(a, b)计算a与b的乘积(序列则为重复拼接)
矩阵乘法a @ bmatmul(a, b)计算矩阵a与矩阵b的乘积(适用于numpy数组等)
算术取反-aneg(a)返回a的相反数
逻辑取反not anot_(a)对a进行逻辑取反,返回布尔值
正数+apos(a)返回a本身(保持符号不变)
右移a >> brshift(a, b)将a的二进制表示向右移b位
切片赋值seq[i:j] = valuessetitem(seq, slice(i, j), values)将seq中i到j(不包含j)的切片替换为values
切片删除del seq[i:j]delitem(seq, slice(i, j))删除seq中i到j(不包含j)的切片
切片取值seq[i:j]getitem(seq, slice(i, j))获取seq中i到j(不包含j)的切片
字符串格式化s % objmod(s, obj)按照s的格式对obj进行格式化
减法a - bsub(a, b)计算a与b的差
真值测试objtruth(obj)判断obj是否为真值,返回布尔值

2.2 运算符函数实例演示

下面通过实例展示常用运算符函数的使用:

# 导入 operator 模块
import operator

# 1. 数学运算(加、减、乘、除、取模、取幂)
a = 4
b = 3
print("数学运算:")
print("add() 运算结果(4+3):", operator.add(a, b))  # 输出7
print("sub() 运算结果(4-3):", operator.sub(a, b))  # 输出1
print("mul() 运算结果(4*3):", operator.mul(a, b))  # 输出12
print("truediv() 运算结果(4/3):", operator.truediv(a, b))  # 输出1.3333333333333333
print("floordiv() 运算结果(4//3):", operator.floordiv(a, b))  # 输出1
print("mod() 运算结果(4%3):", operator.mod(a, b))  # 输出1
print("pow() 运算结果(4**3):", operator.pow(a, b))  # 输出64
print()

# 2. 序列运算(拼接、索引取值/赋值/删除、切片取值/赋值/删除)
# 字符串拼接
seq1 = "Hello"
seq2 = "World"
print("序列运算:")
print("concat() 字符串拼接结果:", operator.concat(seq1, seq2))  # 输出HelloWorld

# 列表索引操作
lst = [10, 20, 30, 40]
print("原列表:", lst)
# 索引取值
print("getitem() 索引1取值:", operator.getitem(lst, 1))  # 输出20
# 索引赋值
operator.setitem(lst, 1, 200)
print("setitem() 索引1赋值后列表:", lst)  # 输出[10, 200, 30, 40]
# 索引删除
operator.delitem(lst, 2)
print("delitem() 索引2删除后列表:", lst)  # 输出[10, 200, 40]

# 列表切片操作
lst2 = [1, 2, 3, 4, 5]
print("原列表2:", lst2)
# 切片取值(1到3,不包含3)
print("getitem() 切片1:3取值:", operator.getitem(lst2, slice(1, 3)))  # 输出[2, 3]
# 切片赋值
operator.setitem(lst2, slice(1, 3), [20, 30])
print("setitem() 切片1:3赋值后列表2:", lst2)  # 输出[1, 20, 30, 4, 5]
# 切片删除
operator.delitem(lst2, slice(1, 3))
print("delitem() 切片1:3删除后列表2:", lst2)  # 输出[1, 4, 5]
print()

# 3. 逻辑与按位运算(包含测试、逻辑取反、按位与/或/异或)
# 包含测试
seq = [1, 2, 3, 4]
obj1 = 2
obj2 = 5
print("逻辑与按位运算:")
print("contains() 判断", obj1, "是否在", seq, "中:", operator.contains(seq, obj1))  # 输出True
print("contains() 判断", obj2, "是否在", seq, "中:", operator.contains(seq, obj2))  # 输出False

# 逻辑取反
bool_val = True
print("not_() 逻辑取反结果(对True取反):", operator.not_(bool_val))  # 输出False

# 按位运算
x = 6  # 二进制:110
y = 3  # 二进制:011
print("and_() 按位与结果(6&3):", operator.and_(x, y))  # 二进制10,输出2
print("or_() 按位或结果(6|3):", operator.or_(x, y))  # 二进制111,输出7
print("xor_() 按位异或结果(6^3):", operator.xor(x, y))  # 二进制101,输出5

代码运行结果如下:

数学运算:
add() 运算结果(4+3): 7
sub() 运算结果(4-3): 1
mul() 运算结果(4*3): 12
truediv() 运算结果(4/3): 1.3333333333333333
floordiv() 运算结果(4//3): 1
mod() 运算结果(4%3): 1
pow() 运算结果(4**3): 64

序列运算:
concat() 字符串拼接结果: HelloWorld
原列表: [10, 20, 30, 40]
getitem() 索引1取值: 20
setitem() 索引1赋值后列表: [10, 200, 30, 40]
delitem() 索引2删除后列表: [10, 200, 40]
原列表2: [1, 2, 3, 4, 5]
getitem() 切片1:3取值: [2, 3]
setitem() 切片1:3赋值后列表2: [1, 20, 30, 4, 5]
delitem() 切片1:3删除后列表2: [1, 4, 5]

逻辑与按位运算:
contains() 判断 2 是否在 [1, 2, 3, 4] 中: True
contains() 判断 5 是否在 [1, 2, 3, 4] 中: False
not_() 逻辑取反结果(对True取反): False
and_() 按位与结果(6&3): 2
or_() 按位或结果(6|3): 7
xor_() 按位异或结果(6^3): 5

三、总结

operator模块是Python 3中替代cmp()函数的重要工具,同时也是优化运算符使用、提升代码灵活性的关键模块。本文从对象比较和运算符函数两大核心功能出发,详细介绍了模块的常用方法、对应关系及实例用法:

  1. 对象比较:通过lt()le()eq()等方法,可实现对数字、字符串、列表等各类对象的比较,完全替代Python 2的cmp()函数。
  2. 运算符函数:涵盖数学运算、序列运算、逻辑运算等多个维度,不仅能实现与内置运算符相同的功能,还能在函数式编程(如结合map()filter()使用)等场景中发挥优势。

掌握operator模块的使用,能让我们的Python代码更简洁、高效,尤其在需要频繁使用运算符或进行对象比较的场景中,效果更为明显。建议大家在实际开发中根据需求灵活运用该模块的各类方法。

💡下一篇咱们学习 Python入门:Python math模块全面学习教程!

附录:扩展学习资源

  1. 官方资源
  2. 本专栏特色资源
    • 代码资源仓库:CSDN专属资源在线获取
    • 海量Python教程:关注公众号:xcLeigh,获取网盘地址
    • 一对一答疑:添加微信与博主在线沟通(备注“Python专栏”

联系博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_43151418/article/details/151717589

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--