📜  Python中运算符的优先级和关联性(1)

📅  最后修改于: 2023-12-03 15:34:27.570000             🧑  作者: Mango

Python中运算符的优先级和关联性

介绍

在Python中,运算符是用来执行特定的数学或逻辑操作的符号。Python中有多种类型的运算符,包括算术运算符、比较运算符、逻辑运算符等。这些运算符根据优先级顺序和关联性规则进行计算,从而得出正确的结果。

运算符的优先级

Python中运算符的优先级决定了哪些运算符会先执行,而哪些则会后执行。下面是Python中运算符的优先级从高到低的顺序:

| 运算符 | 描述 | | ----------------- | ------------------------------------------------------ | | ** | 指数(最高优先级) | | ~ + - | 按位翻转,正负号 | | * / % // | 乘,除,取模和取整除 | | + - | 加法减法运算符 | | >> << | 右移,左移运算符 | | & | 按位与运算符 | | ^ / | | 按位异或,或运算符 | | <= < > >= | 比较运算符 | | <> == != | 等于运算符 | | = %= /= -= += *= **= //= | 赋值运算符 | | is is not | 身份运算符 | | in not in | 成员运算符 | | not and or | 逻辑运算符 |

可以看到,**运算符的优先级最高,逻辑运算符的优先级最低。如果一个表达式中包含多个运算符,Python会按照上述优先级顺序对其进行计算。

运算符的关联性

除了优先级顺序之外,运算符的关联性也决定了运算顺序。运算符的关联性指的是在具有相同优先级的运算符中,哪些运算符会先执行,哪些会后执行。

在Python中,有两种运算符关联性:

  • 左关联性:从左向右执行
  • 右关联性:从右向左执行

下面是Python中运算符的关联性规则:

| 运算符 | 关联性 | | -------- | ------- | | ** | 右关联性 | | + - ~ | 右关联性 | | * / % // | 左关联性 | | + - | 左关联性 | | >> << | 左关联性 | | & | 左关联性 | | ^ / | | 左关联性 |

因此,在一个由多个相同优先级运算符组成的表达式中,Python会按照关联性规则依次进行计算。例如:

>>> 1 + 2 + 3
6
>>> 1 + 2 - 3
0
>>> 1 - 2 + 3
2
>>> 2 ** 3 ** 2
512
>>> (2 ** 3) ** 2
64

在第一个表达式中,由于所有运算符都是左关联性,Python会从左到右依次计算,得出6这个结果。而在第四个表达式中,由于**运算符具有右关联性,Python会先计算3 ** 2,得出9,再计算2 ** 9,得出512。

总结

Python中运算符的优先级和关联性是非常重要的概念。只有理解并掌握了这些规则,才能够正确地计算表达式,并编写出优秀的Python程序。