Python 运算符优先级
Python 运算符优先级表
重要规则说明:
-
优先级: 排名越靠上,优先级越高,越先执行。相同单元格内的运算符具有相同的优先级。
-
结合性: 当多个具有相同优先级的运算符出现在同一个表达式中时,除了乘方运算 和 条件表达式 是从右至左结合(分组)的,其余所有运算符都是从左至右结合的。
-
表格中的运算符均默认指二元运算,除非特别指出(如一元正负号)。
| 优先级次序 | 运算符 (代码表示) | 描述 / 含义 |
|---|---|---|
| 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) 而非表达式,因此通常不列入表达式的优先级表中。但在实际编写代码时,你可以将所有的普通赋值操作和增强赋值操作视为优先级最低(比 := 还要低),它们总是在右侧的表达式全部计算完毕后,最后执行赋值动作。