Python 中所有运算符优先级的详解

Python 中所有运算符优先级的详解

一、运算符详解,按照优先级从高到低排列:

1. 括号

  • ():用于改变运算顺序或创建元组。
  • []:用于列表索引或切片。
  • {}:用于创建字典。

2. 算术运算符

  • **:幂运算(最高优先级)。
  • ~:按位取反。
  • */%//:乘法、除法、取模、整除。
  • +-:加法、减法。

3. 按位运算符

  • <<>>:左移、右移。
  • &:按位与。
  • ^:按位异或。
  • |:按位或。

4. 比较运算符

  • ==!=:等于、不等于。
  • ><:大于、小于。
  • >=<=:大于等于、小于等于。
  • isis not:身份比较。
  • innot in:成员比较。

5. 逻辑运算符

  • not:逻辑非。
  • and:逻辑与。
  • or:逻辑或。

6. 赋值运算符

  • =:简单赋值。
  • +=-=*=/=%= 等:复合赋值运算符。

7. 条件表达式

  • :?:条件表达式(表达式1 if 条件 else 表达式2)。

详细优先级表(从高到低)

优先级 运算符 描述
16 (最高) ()[]{} 括号、索引、字典
15 ** 幂运算
14 +(一元正)、-(一元负)、~ 按位取反、一元运算符
13 */%// 乘法、除法、取模、整除
12 +- 加法、减法
11 <<>> 左移、右移
10 & 按位与
9 ^ 按位异或
8 ` ` 按位或
7 ==!=><>=<= 比较运算符
6 isis not 身份比较
5 innot 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 TrueFalse,再计算 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

    • 解释

      1. 5 > 3Truenot TrueFalse
      2. 5 + 3 * 2 计算为 1111 in [11, 12]True
      3. not 5 > 3 and (5 + 3 * 2) in [11, 12]False and True,结果为 False
      4. 2 ** 3 == 8True
      5. 最终结果为 False or True,即 True
    • 代码

      result = not 5 > 3 and (5 + 3 * 2) in [11, 12] or 2 ** 3 == 8
      print(result)  # 输出 True
      
posted @ 2025-05-23 09:52  luke0366  阅读(1939)  评论(0)    收藏  举报