Python 中所有运算符优先级的详解
Python 中所有运算符优先级的详解
一、运算符详解,按照优先级从高到低排列:
1. 括号
():用于改变运算顺序或创建元组。[]:用于列表索引或切片。{}:用于创建字典。
2. 算术运算符
**:幂运算(最高优先级)。~:按位取反。*、/、%、//:乘法、除法、取模、整除。+、-:加法、减法。
3. 按位运算符
<<、>>:左移、右移。&:按位与。^:按位异或。|:按位或。
4. 比较运算符
==、!=:等于、不等于。>、<:大于、小于。>=、<=:大于等于、小于等于。is、is not:身份比较。in、not in:成员比较。
5. 逻辑运算符
not:逻辑非。and:逻辑与。or:逻辑或。
6. 赋值运算符
=:简单赋值。+=、-=、*=、/=、%=等:复合赋值运算符。
7. 条件表达式
:、?:条件表达式(表达式1 if 条件 else 表达式2)。
详细优先级表(从高到低)
| 优先级 | 运算符 | 描述 | |
|---|---|---|---|
| 16 (最高) | ()、[]、{} |
括号、索引、字典 | |
| 15 | ** |
幂运算 | |
| 14 | +(一元正)、-(一元负)、~ |
按位取反、一元运算符 | |
| 13 | *、/、%、// |
乘法、除法、取模、整除 | |
| 12 | +、- |
加法、减法 | |
| 11 | <<、>> |
左移、右移 | |
| 10 | & |
按位与 | |
| 9 | ^ |
按位异或 | |
| 8 | ` | ` | 按位或 |
| 7 | ==、!=、>、<、>=、<= |
比较运算符 | |
| 6 | is、is not |
身份比较 | |
| 5 | in、not in |
成员比较 | |
| 4 | not |
逻辑非 | |
| 3 | and |
逻辑与 | |
| 2 | or |
逻辑或 | |
| 1 | =、+=、-=等 |
赋值运算符 | |
| 0 (最低) | 条件表达式 | 条件表达式 |
二、运算符优先级示例:
1. 算术运算符优先级
-
示例:
5 + 3 * 2-
解释:乘法优先于加法,先计算
3 * 2 = 6,再加5,结果为11。 -
代码:
result = 5 + 3 * 2 print(result) # 输出 11
-
-
示例:
(5 + 3) * 2-
解释:括号优先,先计算
5 + 3 = 8,再乘以2,结果为16。 -
代码:
result = (5 + 3) * 2 print(result) # 输出 16
-
2. 比较运算符和逻辑运算符的组合
-
示例:
5 > 3 and 3 != 2-
解释:比较运算符优先于逻辑与。先计算
5 > 3(True)和3 != 2(True),再进行逻辑与,结果为True。 -
代码:
result = 5 > 3 and 3 != 2 print(result) # 输出 True
-
-
示例:
not 5 > 3 or 3 == 2-
解释:逻辑非优先于逻辑或,但比较运算符优先级更高。先计算
5 > 3(True),not True为False,再计算3 == 2(False),最后逻辑或结果为False。 -
代码:
result = not 5 > 3 or 3 == 2 print(result) # 输出 False
-
3. 位运算符和逻辑运算符的组合
-
示例:
5 & 3 | 2-
解释:按位与优先于按位或。先计算
5 & 3 = 1,再与2进行按位或,结果为3。 -
代码:
result = 5 & 3 | 2 print(result) # 输出 3
-
-
示例:
(5 | 3) & 2-
解释:括号优先,先计算
5 | 3 = 7,再与2进行按位与,结果为2。 -
代码:
result = (5 | 3) & 2 print(result) # 输出 2
-
4. 成员运算符和身份运算符
-
示例:
2 in [1, 2, 3] and [1, 2] is not [1, 2]-
解释:成员运算符和身份运算符的优先级相同,但逻辑与的优先级更高。先判断
2 in [1, 2, 3](True)和[1, 2] is not [1, 2](True),结果为True。 -
代码:
result = 2 in [1, 2, 3] and [1, 2] is not [1, 2] print(result) # 输出 True
-
5. 赋值运算符和复合赋值运算符
-
示例:
a = 5; a += 3-
解释:复合赋值运算符
+=等价于a = a + 3,结果为8。 -
代码:
a = 5 a += 3 print(a) # 输出 8
-
-
示例:
a = 10; a = a ** 2 // 3-
解释:幂运算优先于整除。先计算
10 ** 2 = 100,再整除3,结果为33。 -
代码:
a = 10 a = a ** 2 // 3 print(a) # 输出 33
-
6. 条件表达式
-
示例:
x = 10 if 5 > 3 else 5-
解释:条件表达式中,先判断
5 > 3(True),所以x被赋值为10。 -
代码:
x = 10 if 5 > 3 else 5 print(x) # 输出 10
-
-
示例:
y = 5 if 3 > 5 else 10 if 3 < 5 else 15-
解释:嵌套条件表达式,先判断
3 > 5(False),再判断3 < 5(True),所以y被赋值为10。 -
代码:
y = 5 if 3 > 5 else 10 if 3 < 5 else 15 print(y) # 输出 10
-
7. 综合示例
-
示例:
not 5 > 3 and (5 + 3 * 2) in [11, 12] or 2 ** 3 == 8-
解释:
5 > 3为True,not True为False。5 + 3 * 2计算为11,11 in [11, 12]为True。not 5 > 3 and (5 + 3 * 2) in [11, 12]为False and True,结果为False。2 ** 3 == 8为True。- 最终结果为
False or True,即True。
-
代码:
result = not 5 > 3 and (5 + 3 * 2) in [11, 12] or 2 ** 3 == 8 print(result) # 输出 True
-
浙公网安备 33010602011771号