Python 运算符优先级规则,就是当一行代码里面同时出现多种运算符的时候,解释器会按照预先设定好的等级,决定先计算哪一部分,优先级高的运算先执行,同一优先级的运算符,再结合结合性决定计算顺序,默认大多是从左向右计算,幂运算属于从右向左结合。很多新手写表达式的时候,容易因为不清楚 Python 运算符优先级规则,得到和预期不一样的计算结果,这也是入门阶段高频出错点,掌握这套规则之后,写复合表达式就可以预判运算顺序,同时也推荐在不确定顺序的时候,主动增加小括号,小括号优先级是最高的,可以强制改变运算顺序,提升代码可读性。
一 优先级总表 从高到低排序
| 优先级等级 | 运算符 | 说明 |
|---|---|---|
| 最高 | () | 小括号,强制优先计算 |
| 高 | ** | 幂运算,也就是次方 |
| 高 | +x -x ~x | 正号 负号 按位取反 |
| 中 | * / % // | 乘法 除法 取余 整除 |
| 中 | + - | 加法 减法 |
| 中 | << >> | 左移 右移位运算 |
| 中 | & | 按位与 |
| 中 | ^ | 按位异或 |
| 中 | | | 按位或 |
| 中 | == != > >= < <= | 比较运算符 |
| 中 | not | 逻辑非 |
| 中 | and | 逻辑与 |
| 低 | or | 逻辑或 |
| 最低 | = += -= *= 等赋值运算符 | 赋值运算 |
二 重点规则深度讲解
1 幂运算的特殊结合性
幂运算是从右向左结合,这一点和普通加减乘除不一样
示例 232 等价于 2(32),也就是 2 的 9 次方,不是 (23)2
很多新手在这里踩坑,误以为从左往右算,得到错误结果。
2 算术运算优先于比较运算
算术运算的等级高于比较运算符,比如 3+2>4,会先算 3+2 等于 5,再判断 5>4,结果为 True
3 逻辑运算符优先级 not > and > or
逻辑运算符里面,not 优先级最高,然后是 and,最后是 or
示例 True or False and True,会先执行 and 部分,再执行 or 部分
如果想改变顺序,同样可以加小括号。
4 赋值运算符优先级最低
所有赋值运算,都是最后执行,也就是先完成右边表达式全部计算,再把结果赋值给左边变量。
三 结合性补充说明
结合性,代表同一优先级运算符连续出现的时候,计算方向
从左向右结合 加减乘除 比较运算符 逻辑 and or
从右向左结合 幂运算 赋值运算符
四 实战示例演示
示例 1 10 + 3 2
乘法优先级高于加法,先算 32 等于 6,再算 10+6,结果是 16
示例 2 2 + 8 // 3
整除优先级高于加法,8//3 等于 2,最后 2+2 等于 4
示例 3 True or False and False
and 优先级高于 or,先算 False and False 等于 False,再 True or False,结果 True
五 编码建议
虽然记住 Python 运算符优先级规则可以写表达式,但是实际项目代码,不建议全部依靠记忆,复杂表达式主动增加小括号,一方面可以保证计算顺序正确,另一方面别人阅读代码的时候,不需要对照优先级表,可读性更强,减少后续维护出错概率。
整体总结,Python 运算符优先级规则核心就是小括号最高,幂运算特殊右结合,算术运算高于比较运算,逻辑运算 not 高于 and 高于 or,赋值运算最低,理解这套等级和结合性,写复合表达式就不会出现顺序错误。
【常见问题】
问题 1 Python 运算符优先级规则 小括号有什么作用
回答 1 Python 运算符优先级规则里面小括号优先级最高,可以强制改变默认运算顺序,复杂表达式推荐使用小括号提升可读性。
问题 2 Python 运算符优先级规则 幂运算结合方向是什么
回答 2 Python 运算符优先级规则中幂运算 是从右向左结合,和普通算术运算从左向右不一样,属于特殊考点。
问题 3 Python 运算符优先级规则 not and or 谁优先级最高
回答 3 Python 运算符优先级规则里面逻辑运算符优先级顺序是 not 最高,然后是 and,最后是 or。
问题 4 Python 运算符优先级规则 算术运算和比较运算哪个先执行
回答 4 Python 运算符优先级规则里面算术运算优先级高于比较运算,会先完成算术计算,再执行比较判断。
【免责申明】
本文内容为 Python 运算符优先级规则知识点整理,仅用于学习参考,详细官方定义可查阅 Python 官方文档。


