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

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 =20print("数字比较:")print("x:", x,", y:", y)print("operator.lt(x,y): ", operator.lt(x, y))# 输出True,10<20print("operator.gt(y,x): ", operator.gt(y, x))# 输出True,20>10print("operator.eq(x,x): ", operator.eq(x, x))# 输出True,10==10print("operator.ne(y,y): ", operator.ne(y, y))# 输出False,20!=20不成立print("operator.le(x,y): ", operator.le(x, y))# 输出True,10<=20print("operator.ge(y,x): ", operator.ge(y, x))# 输出True,20>=10print()# 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 =3print("数学运算:")print("add() 运算结果(4+3):", operator.add(a, b))# 输出7print("sub() 运算结果(4-3):", operator.sub(a, b))# 输出1print("mul() 运算结果(4*3):", operator.mul(a, b))# 输出12print("truediv() 运算结果(4/3):", operator.truediv(a, b))# 输出1.3333333333333333print("floordiv() 运算结果(4//3):", operator.floordiv(a, b))# 输出1print("mod() 运算结果(4%3):", operator.mod(a, b))# 输出1print("pow() 运算结果(4**3):", operator.pow(a, b))# 输出64print()# 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 =5print("逻辑与按位运算:")print("contains() 判断", obj1,"是否在", seq,"中:", operator.contains(seq, obj1))# 输出Trueprint("contains() 判断", obj2,"是否在", seq,"中:", operator.contains(seq, obj2))# 输出False# 逻辑取反 bool_val =Trueprint("not_() 逻辑取反结果(对True取反):", operator.not_(bool_val))# 输出False# 按位运算 x =6# 二进制:110 y =3# 二进制:011print("and_() 按位与结果(6&3):", operator.and_(x, y))# 二进制10,输出2print("or_() 按位或结果(6|3):", operator.or_(x, y))# 二进制111,输出7print("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. 本专栏特色资源
    • 代码资源仓库:ZEEKLOG专属资源在线获取
    • 海量Python教程:关注公众号:xcLeigh,获取网盘地址
    • 一对一答疑:添加微信与博主在线沟通(备注“Python专栏”

联系博主

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

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

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

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


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

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

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

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

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

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


在这里插入图片描述

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

Read more

Flutter for OpenHarmony: Flutter 三方库 ntp 精准同步鸿蒙设备系统时间(分布式协同授时利器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 分布式开发、金融交易或具有严格时效性的业务(如:秒杀倒计时、双因素认证 OTP)时,开发者不能完全信任设备本地的系统时间。用户可能为了某种目的手动篡改时间,或者由于网络同步问题导致时间存在偏差。 ntp 软件包提供了一种直接与互联网授时中心(NTP 服务器)通信的能力。它能绕过本地系统时钟,获取绝对精准的 UTC 时间,并计算出本地时间与真实时间的“偏移量(Offset)”。 一、核心授时原理 ntp 通过测量往返网络延迟来消除误差。 发送 NTP 请求 (UDP) 返回高精度时间戳 鸿蒙 App 全球授时中枢 (pool.ntp.org) 计算网络往返耗时 (RTT) 得出绝对时间偏移量 生成鸿蒙业务专用准时 二、

By Ne0inhk
Xiaomusic 让小爱音箱解锁本地曲库,内网穿透更能远程点歌

Xiaomusic 让小爱音箱解锁本地曲库,内网穿透更能远程点歌

Xiaomusic 是一款专为小爱音箱打造的本地音乐管理工具,核心功能是绑定小米账号后让小爱音箱直接读取 NAS 中的音乐文件,支持语音点播、随机播放、循环歌单等基础操作,适配所有能运行 Docker 的设备,无论是家用 NAS(极空间、群晖等)还是普通电脑都能部署。它的适用人群主要是有本地音乐收藏习惯、不想被音乐平台会员限制的用户,尤其是家中有小爱音箱且配备 NAS 的家庭用户,优点在于部署门槛低,无需编程基础,轻量化占用资源少,还能通过网页端可视化管理歌单和设备,操作简单易上手。 使用 Xiaomusic 时能明显感受到本地音乐调用的便捷性,比如喊一声 “播放收藏的经典老歌” 就能秒响应,但也有需要注意的地方:小米账号绑定后建议定期检查登录状态,避免因账号安全设置导致连接失效;NAS 中的音乐文件最好按统一格式整理,否则可能出现语音点播识别不准确的情况;另外部署时要确保存储路径设置正确,不然会出现音乐文件无法读取的问题。 不过仅在局域网内使用 Xiaomusic 会有明显的局限性,比如人在公司想给家里的老人点播戏曲,却因为不在同一网络无法操作;出门旅游时想远程调整家中小爱音箱的

By Ne0inhk
【降低 30% 开发成本:使用 Trae IDE 将 Figma 设计稿转化为前端代码】

【降低 30% 开发成本:使用 Trae IDE 将 Figma 设计稿转化为前端代码】

降低 30% 开发成本:使用 Trae IDE 将 Figma 设计稿转化为前端代码_ide_葡萄城技术团队-葡萄城开发者空间 TRAE与Figma MCP:iOS原生应用UI自动生成的艺术-易源AI资讯 | 万维易源 Login | Figma 基于提供的Figma设计文件和网页链接,开发一个完整的前端网站项目。具体要求如下: 1. 页面展示要求: * 采用平铺式布局展示所有页面 * 严格遵循Figma设计稿中的视觉规范 * 实现IOS风格的高保真原型效果 * 确保所有交互元素与设计稿一致 2. 技术实现要求: * 使用现代前端框架(如React/Vue) * 实现响应式布局,适配不同设备 * 添加平滑的页面过渡动画 * 确保所有UI组件的高还原度 3. 交付物要求: * 完整的可运行前端代码 * 详细的部署文档 * 跨浏览器兼容性测试报告 * 性能优化方案 4. 质量标准: * 像素级还原设计稿 * 所有交互功能完整可用 * 代码符合最佳实践

By Ne0inhk

别装了!你写的JS代码全在“裸奔”,99%前端都在背锅!

今天,我想直接撕开一个血淋淋的真相。 在这个行业里,我审查过无数的JavaScript应用程序,甚至包括那些大厂出品的标杆项目。然而,它们几乎无一例外地都藏着致命的安全漏洞。 这不是因为前端开发者们在摸鱼,也并非因为团队对最佳实践视而不见。 真正的原因在于,现代JavaScript这头巨兽实在太复杂、进化太快了,而且它从头到脚都布满了让人防不胜防的暗坑。 无论是在初创公司的草台班子、企业级的豪华看板,还是那些每天处理着真金白银和海量真实用户的核心生产系统里,我一遍又一遍地看着同样的悲剧反复上演。 JS的安全漏洞,最喜欢玩“死一般寂静” 报错导致APP崩溃?那反而是你修了八辈子福得来的福报! 通常来说,当你把代码搞砸了,你立马就能收到反馈。 比如一个直接报错的API请求,一个四分五裂的页面布局,或者测试控制台里那片刺眼的爆红。 但是,安全漏洞根本不跟你玩这套,它们就像隐形杀手一样,蛰伏在死一般的寂静中。 你的UI看起来美轮美奂。你的API跑得顺风顺水。你的自动化测试全绿通过。 可就在同时,在那些你看不见的阴暗角落里,黑客可能正在疯狂窃取你用户的会话令牌(Session

By Ne0inhk