Python运算符全面解析:从基础用法到优先级规则
off999 2025-05-02 12:50 5 浏览 0 评论
在Python编程中,运算符是构建表达式的核心元素,用于执行各种数据操作。本文将系统介绍Python运算符的分类、基本用法、特殊特性以及优先级规则,帮助开发者全面掌握这一基础且重要的知识点。
一、运算符分类与基础用法
Python运算符可分为8大类,每类运算符针对不同的数据操作场景设计,以下是详细解析:
1. 算术运算符:数值计算的基础
运算符 | 名称 | 用法示例 | 说明 |
+ | 加法 | 3 + 4 | 支持数值相加,字符串/列表/元组可用于拼接 |
- | 减法 | 5 - 2 | 数值相减,支持负数 |
* | 乘法 | 3 * 4 | 数值相乘,字符串/列表可用于重复(如'a' * 3输出'aaa') |
/ | 浮点除法 | 7 / 2 | 结果始终为浮点数,如7/2输出3.5 |
// | 地板除法 | 7 // 2 | 向下取整的整数除法,结果为3;负数时向负无穷取整(如-7//2为-4) |
% | 取模(余数) | 7 % 2 | 返回除法余数,7%2为1,负数取模结果符号与除数一致(如-7%2为1) |
** | 幂运算 | 2 ** 3 | 指数运算,23为8,支持浮点数(如40.5为2.0) |
特殊场景:
- 字符串拼接:'Hello' + 'World' → 'HelloWorld'
- 列表扩展:[1,2] + [3,4] → [1,2,3,4]
2. 比较运算符:返回布尔值的逻辑判断
比较运算符用于判断表达式之间的关系,结果始终为True或False:
- 等于:==(注意与赋值运算符=区分)
- 不等于:!=(Python 2中的<> 已废弃)
- 大小关系:>、<、>=、<=
- 链式比较:支持连续判断,如1 < x <= 10等价于1 < x and x <= 10
示例:
a, b = 5, 3
print(a > b) # True
print(a != b) # True
print(2 <= 3 < 5) # True
3. 逻辑运算符:组合布尔值的逻辑判断
逻辑运算符用于连接多个布尔表达式,具有短路特性(短路规则可提升效率):
- and(与):两边均为True时返回True,否则False;左值为False时右值不计算
- or(或):至少一个为True时返回True,否则False;左值为True时右值不计算
- not(非):取反布尔值,not True为False,not 0(非零值视为True)为False
短路示例:
x = 0
y = 5
print(x and y) # 0(左值为False,直接返回左值,不计算y)
print(x or y) # 5(左值为False,返回右值)
4. 赋值运算符:变量赋值与复合操作
- 基础赋值:=(将右侧值赋给左侧变量)
- 复合赋值:+=、-=、*=、/=、//=、%=、**=(简化代码,如a += 3等价于a = a + 3)
- 多变量赋值:支持同时赋值,如x, y = 1, 2(元组解包),x = y = 3(链式赋值)
5. 位运算符:二进制层面的逐位操作
位运算符对整数的二进制位进行操作(以8位二进制为例):
运算符 | 名称 | 示例(a=6(0110), b=3(0011)) | 结果(二进制/十进制) |
& | 按位与 | a & b | 0010 / 2 |
按位或 | a | ||
^ | 按位异或 | a ^ b | 0101 / 5 |
~ | 按位取反 | ~a | 1001 / -7(补码表示) |
<< | 左移 | a << 1 | 1100 / 12 |
>> | 右移 | a >> 1 | 0011 / 3 |
左移/右移本质:左移n位相当于乘以2^n,右移n位相当于整除2^n(向下取整)。
6. 成员运算符:判断元素是否存在
- in:检查元素是否在序列(字符串、列表、元组、字典键)中
- not in:检查元素是否不在序列中
字典场景:key in dict判断键是否存在,而非值。
s = "hello"
print('h' in s) # True
print(3 not in [1,2]) # True
7. 身份运算符:判断对象是否为同一实例
- is:判断两个变量是否指向同一内存对象(比==更严格,比较内存地址)
- is not:判断是否为不同对象
注意:Python对小整数(-5到256)和短字符串会进行缓存,因此a = 1; b = 1; a is b为True,但大整数可能返回False。
8. 三目运算符(条件表达式):简洁的条件赋值
语法:value_if_true if condition else value_if_false
x = 5
result = "even" if x % 2 == 0 else "odd" # result为"odd"
二、运算符优先级:表达式求值顺序的核心规则
运算符优先级决定了表达式中不同运算符的计算顺序,优先级高的先执行。以下是从高到低的优先级列表(共15级,数字越小优先级越高):
优先级 | 运算符分类 | 具体运算符 | 结合性 |
1 | 括号 | () | 左结合 |
2 | 幂运算 | ** | 右结合 |
3 | 正负号 | +x、-x | 右结合 |
4 | 算术运算符(乘除取模) | *、/、//、% | 左结合 |
5 | 算术运算符(加减) | +、- | 左结合 |
6 | 位运算符(位移) | <<、>> | 左结合 |
7 | 位运算符(按位与) | & | 左结合 |
8 | 位运算符(按位异或) | ^ | 右结合 |
9 | 位运算符(按位或) | ||
10 | 比较运算符 | ==、!=、>、<、>=、<= | 左结合 |
11 | 身份运算符 | is、is not | 左结合 |
12 | 成员运算符 | in、not in | 左结合 |
13 | 逻辑运算符(非) | not | 右结合 |
14 | 逻辑运算符(与) | and | 左结合 |
15 | 逻辑运算符(或) | or | 左结合 |
16 | 赋值运算符 | =、+=、*=等 | 右结合 |
关键规则说明:
- 括号优先级最高:强制改变运算顺序,如2 * (3 + 4)先算括号内。
- 幂运算右结合:2 ** 3 ** 2等价于2 ** (3 ** 2)=512,而非(2 ** 3) ** 2=64。
- 逻辑运算符的短路特性:不依赖优先级,a or b and c中or先计算,但因短路规则,实际先算a,若为True则直接返回a,否则计算b and c。
- 赋值运算符最低:总是最后执行,如a = b + c中先算b + c,再赋值。
优先级示例:
# 表达式:not 3 > 5 and 4 < 6 or 2 ** 3 == 8
# 分步解析(加括号明确顺序):
((not (3 > 5)) and (4 < 6)) or (2 ** 3 == 8)
→ (True and True) or True → True or True → True
三、最佳实践:写出清晰易读的表达式
- 避免过度依赖优先级:对复杂表达式加括号明确顺序,如(a + b) * c而非a + b * c。
- 区分is与==:前者用于对象身份判断,后者用于值相等判断(如a = [1,2]; b = [1,2]; a == b为True,但a is b为False)。
- 利用短路特性优化代码:在if condition1 and condition2中,确保condition1为False时condition2无副作用(如函数调用)。
- 位运算的场景:仅在处理二进制数据(如文件流、状态标志)时使用,避免滥用。
四、总结
Python运算符体系设计简洁且强大,掌握其用法和优先级是编写高效、正确代码的基础。开发者需牢记:
- 算术运算符的运算规则(尤其是除法和取模的细节);
- 逻辑运算符的短路特性和布尔值的隐式转换(非零数值、非空容器视为True);
- 优先级的核心规则(括号最高、幂运算右结合、赋值最低)。
通过合理使用运算符和括号,避免复杂表达式,可显著提升代码的可读性和可维护性。建议在实际开发中多使用交互式环境(如Python Shell)验证运算符行为,加深理解。
相关推荐
- 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
-
在日常开发中,时间处理是绕不开的一块,比如:生成时间戳比较两个时间差转换为可读格式接口传参/前端展示/日志记录今天我们就用一个案例+代码+思维导图,带你完全搞定datetime模块的用法!...
- 字节跳动!2023全套Python入门笔记合集
-
学完python出来,已经工作3年啦,最近有很多小伙伴问我,学习python有什么用其实能做的有很多可以提高工作效率增强逻辑思维还能做爬虫网站数据分析等等!!最近也是整理了很多适合零基...
- 为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图
-
前言Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。然而,设置数据、参数、图形和绘图在每次执行新项目时都可能变得非常混乱和繁琐。而且由于应用不同,我们不知道选择哪一个图...
- Python新手必看!30分钟搞懂break/continue(附5个实战案例)
-
一、跳转语句的使命当程序需要提前结束循环或跳过特定迭代时,break和continue就是你的代码急刹按钮和跳步指令。就像在迷宫探险中:break=发现出口立即离开continue=跳过陷阱继续前进二...
- 刘心向学(24)Python中的数据类(python中5种简单的数据类型)
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(24)Python中的数据类”欢迎您的访问。Shareinterest,...
- 刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(25)Python中的虚拟环境”欢迎您的访问。Shareinte...
- 栋察宇宙(八):Python 中的 wordcloud 库学习介绍
-
分享乐趣,传播快乐,增长见识,留下美好。亲爱的您,这里是LearingYard学苑!今天小编为大家带来“Python中的wordcloud库学习介绍”欢迎您的访问!Sharethefun,...
- AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图
-
机器之能报道编辑:Cardinal以大模型、AIGC为代表的人工智能浪潮已经在悄然改变着我们生活及工作方式,但绝大部分人依然不知道该如何使用。因此,我们推出了「AI在用」专栏,通过直观、有趣且简洁的人...
- 使用DeepSeek + Python开发AI思维导图应用,非常强!
-
最近基于Deepseek+PythonWeb技术开发了一个AI对话自动生成思维导图的应用,用来展示下如何基于低门槛的Python相关技术栈,高效结合deepseek实现从应用场景到实际应用的快速落地...
- 10幅思维导图告诉你 - Python 核心知识体系
-
首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象编程;接着,结合这些思维导图主要参考的...
- Python基础核心思维导图,让你轻松入门
-
Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...
- Python基础核心思维导图,学会事半功倍
-
Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...
- 硬核!288页Python核心知识笔记(附思维导图,建议收藏)
-
今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...
- Python学习知识思维导图(高效学习)
-
Python学习知识思维导图python基础知识python数据类型条件循环列表元组字典集合字符串序列函数面向对象编程模块错误异常文件对象#python##python自学##编程#...
- 别找了!288页Python核心知识笔记(附思维导图,建议收藏)
-
今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
- 字节跳动!2023全套Python入门笔记合集
- 为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图
- Python新手必看!30分钟搞懂break/continue(附5个实战案例)
- 刘心向学(24)Python中的数据类(python中5种简单的数据类型)
- 刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)
- 栋察宇宙(八):Python 中的 wordcloud 库学习介绍
- AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图
- 使用DeepSeek + Python开发AI思维导图应用,非常强!
- 10幅思维导图告诉你 - Python 核心知识体系
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)