Python运算符优先级口诀及记忆技巧
作者:EasyWind
时间:2026-02-12
浏览:2
幂运算最高(右结合),接着是///%(左结合),然后是+-(左结合),再是==!=(左结合),最后是赋值=(右结合);例如-32得-9,2+34先算乘,10-3+2从左得9,3+4==7无需括号。
幂运算最高(右结合),接着是///%(左结合),然后是+-(左结合),再是==!=(左结合),最后是赋值=(右结合);例如-32得-9,2+34先算乘,10-3+2从左得9,3+4==7无需括号。

Python 运算符优先级没有官方口诀,但靠死记表格容易混淆——真正管用的是按「结合性 + 常见组合」分层理解,再配几个短小精准的助记点。
记住这 5 层结构,覆盖 95% 场景
不用背全部 17 级,日常写代码高频出现的就这几层,从高到低:
**(右结合)→ 幂运算单独一层,比+-高得多,-3**2是-9不是9*///%(左结合)→ 四则中除法类统一高于加减,2 + 3 * 4先算乘+-(左结合)→ 加减同级,10 - 3 + 2从左算得9,不是5==!=<><=>=(左结合)→ 比较运算符同级且低于算术,3 + 4 == 7没括号也对;但3 < 4 == 5是True and False→False(链式比较!)andornot(not最高,and次之,or最低)→not优先于and,and优先于or;False or not True and True等价于False or ((not True) and True)
最容易踩坑的 3 种情况
优先级本身不难,难在「看起来像会那样算,其实不是」:
is和==优先级相同,但语义完全不同:x is y == z是链式比较,等价于(x is y) and (y == z),不是(x is y) == zlambda优先级最低,所以lambda x: x + 1 == 2被解析为lambda x: (x + 1 == 2),不是(lambda x: x + 1) == 2await优先级低于**,高于*:即await x ** 2合法,但await x * 2会报SyntaxError,必须写成(await x) * 2
调试时快速验证优先级的方法
别猜,用 ast 模块看 Python 实际怎么解析:
import ast
print(ast.dump(ast.parse('a + b * c', mode='eval'), indent=2))输出里能看到 BinOp 的 op 是 Mult 包在 Add 里面,说明 * 先于 +。对复杂表达式(比如含 and/or/if-else 三元)尤其有用。
真正要留心的不是「哪一级最高」,而是「哪些看似并列实则分层」——比如 not 看起来和 and 都是逻辑词,但它绑定更紧;又比如 is 和 in 优先级一样,但没人会把它们混着链式写。多写两行括号,远比查表省心。
作者最新文章
淘宝闪购“等灯不计时”机制解析:政策、技术与多方协同
2026-09-08 18:00
一加自研电竞三芯P4/G3/T3确认:一加16首发,支持185FPS及9000mAh电池
2026-09-08 16:52
抖音拍摄剪辑教程:从竖屏运镜到卡点成片
2026-09-03 06:05
Excel筛选大于指定数值:操作步骤与结果验证
2026-09-03 06:03
PDF添加文字水印:位置、透明度与字号设置指南
2026-09-03 06:01
上一篇:
花花手帐新建本详细教程
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































