您的位置:首页 >Python运算符优先级口诀及记忆技巧
发布于2026-02-13 阅读(0)
扫一扫,手机访问
幂运算最高(右结合),接着是///%(左结合),然后是+-(左结合),再是==!=(左结合),最后是赋值=(右结合);例如-32得-9,2+34先算乘,10-3+2从左得9,3+4==7无需括号。

Python 运算符优先级没有官方口诀,但靠死记表格容易混淆——真正管用的是按「结合性 + 常见组合」分层理解,再配几个短小精准的助记点。
不用背全部 17 级,日常写代码高频出现的就这几层,从高到低:
**(右结合)→ 幂运算单独一层,比 + - 高得多,-3**2 是 -9 不是 9* / // %(左结合)→ 四则中除法类统一高于加减,2 + 3 * 4 先算乘+ -(左结合)→ 加减同级,10 - 3 + 2 从左算得 9,不是 5== != < > <= >=(左结合)→ 比较运算符同级且低于算术,3 + 4 == 7 没括号也对;但 3 < 4 == 5 是 True and False → False(链式比较!)and or not(not 最高,and 次之,or 最低)→ not 优先于 and,and 优先于 or;False or not True and True 等价于 False or ((not True) and True)优先级本身不难,难在「看起来像会那样算,其实不是」:
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 优先级一样,但没人会把它们混着链式写。多写两行括号,远比查表省心。
上一篇:花花手帐新建本详细教程
下一篇:Excel常用快捷键大全推荐
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9