Skip to content

Python 运算符优先级

Python 运算符优先级表

重要规则说明:

  1. 优先级: 排名越靠上,优先级越高,越先执行。相同单元格内的运算符具有相同的优先级。

  2. 结合性: 当多个具有相同优先级的运算符出现在同一个表达式中时,除了乘方运算 和 条件表达式 是从右至左结合(分组)的,其余所有运算符都是从左至右结合的。

  3. 表格中的运算符均默认指二元运算,除非特别指出(如一元正负号)。

优先级次序 运算符 (代码表示) 描述 / 含义
1 (expressions...), [expressions...], {key: value...}, {expressions...} 圆括号的表达式(包括元组、列表、字典、集合的显示及推导式)
2 x[index], x[index:index], x(arguments...), x.attribute 索引读取、切片、函数调用、属性引用
3 await x await 表达式(用于异步编程协程)
4 ** 乘方 (指数) (注:此运算符为右结合,即 2**3**2 等于 2**(3**2))
5 +x, -x, ~x 一元正号、一元负号、按位非 (NOT)
6 *, @, /, //, % 乘法、矩阵乘法 (@为 Python 3.5+ 引入) 、真除法、向下整除、取余 (取模)
7 +, - 加法和减法
8 <<, >> 按位左移、按位右移
9 & 按位与 (AND)
10 ^ 按位异或 (XOR)
11 \| 按位或 (OR)
12 in, not in, is, is not, <, <=, >, >=, !=, == 比较运算,包含:



• 成员检测 (in, not in)



• 对象标识号/身份检测 (is, is not)



• 值比较 (< 等)
13 not x 逻辑非 (NOT)(布尔运算)
14 and 逻辑与 (AND)(布尔运算)
15 or 逻辑或 (OR)(布尔运算)
16 if -- else 条件表达式(即 Python 的三元运算符:x if C else y)
17 lambda lambda 表达式(匿名函数创建)
18 := 赋值表达式(海象运算符 / Walrus Operator,Python 3.8+ 引入,可在表达式内部为变量赋值)

赋值语句:

图片中未列出常规的赋值操作符(如 =, +=, -=, *=, /= 等),因为在 Python 中严格来说它们属于语句 (Statements) 而非表达式,因此通常不列入表达式的优先级表中。但在实际编写代码时,你可以将所有的普通赋值操作和增强赋值操作视为优先级最低(比 := 还要低),它们总是在右侧的表达式全部计算完毕后,最后执行赋值动作。