Python - 运算符优先级


Python 中的运算符优先级

在Python中,表达式包含一个或多个变量、文字和运算符(算术、逻辑、二进制等)。Python 解释器计算表达式,并将结果分配给变量或在另一个语句中使用。解释器根据运算符的优先级执行各种操作。

如果某个表达式包含多个运算符,则它们的计算顺序由优先顺序决定。例如,考虑以下表达式

>>> a = 2+3*5

这里, a的值是多少?- 是的,是 17(先将 3 乘以 5,然后加 2)还是 25(将 2 和 3 加起来,然后乘以 5)?Python 的运算符优先级规则就在这里体现出来。

如果我们只考虑Python中的算术运算符,Python解释器也采用传统的BODMAS规则,首先计算括号,然后是除法乘法运算符,然后是加法减法运算符。因此,上面表达式中的 a 将变为 17。

除了运算符优先级之外,运算符的结合性也很重要。如果表达式由具有相同优先级的运算符组成,则结合性决定顺序。大多数运算符都具有从左到右的结合性。这意味着,左边的运算符先于右边的运算符计算。

让我们考虑另一个表达式:

>>> b = 10/5*4

在这种情况下,*(乘法)和/(除法)运算符具有相同的优先级。但是,从左到右结合性规则首先执行除法 (10/5 = 2),然后执行乘法 (2*4 = 8)。

Python 运算符优先级表

下表按优先级降序列出了 Python 中的所有运算符。运算符列下同一单元格中的运算符具有相同的优先级。

先生。 运算符及描述
1

(),[],{}

圆括号和大括号

2

[索引],[索引:索引]

订阅、切片、

3

等待x

等待表达

4

**

求幂

5

+x、-x、~x

正数、负数、按位非

6

*、@、/、//、%

乘法、矩阵乘法、除法、取整除法、余数

7

+、-

加减

8

<<,>>

左移、右移

9

&

按位与

10

^

按位异或

11

|

按位或

12

在、不在、是、不是、<、<=、>、>=、!=、==

比较,包括成员资格测试和身份测试

13

不是x

布尔非

14

布尔与

15

或者

布尔或

16

如果别的

条件表达式

17 号

拉姆达

拉姆达表达式

18

:=

海象操作员

Python 运算符优先级示例

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d       #( 30 * 15 ) / 5
print ("Value of (a + b) * c / d is ",  e)

e = ((a + b) * c) / d     # (30 * 15 ) / 5
print ("Value of ((a + b) * c) / d is ",  e)

e = (a + b) * (c / d);    # (30) * (15/5)
print ("Value of (a + b) * (c / d) is ",  e)

e = a + (b * c) / d;      #  20 + (150/5)
print ("Value of a + (b * c) / d is ",  e)

当您执行上述程序时,它会产生以下结果 -

Value of (a + b) * c / d is  90.0
Value of ((a + b) * c) / d is  90.0
Value of (a + b) * (c / d) is  90.0
Value of a + (b * c) / d is  50.0