04_10运算符的优先级和结合性

一、操作符优先级和结合性简介

操作符是编程中不可避免的一部分,其中的优先级和结合性直接影响表达式的计算结果。操作符的优先级是指在一个表达式中,哪些操作符会先进行计算,哪些会后进行计算。一般来说,用括号可以改变操作符的优先级顺序。而结合性则是指在一个表达式中,相同优先级的操作符如何进行结合,是从左往右,还是从右往左。

Python中最常见的操作符包括算术运算符、比较运算符、逻辑运算符、位运算符等。下面我们将分别探讨这些操作符的优先级和结合性。

二、算术运算符

算术运算符包括加、减、乘、除等符号。同级别的操作符按从左向右的顺序结合,优先级从高到低按照:幂运算符**,正负号+,-,乘除符号*,/,%,加减符号+,-

a = 1 + 2 * 3

b = (1 + 2) *3

print(a) #7

print(b) #9

在以上代码中,因为乘号的优先级高于加号,所以a的值为7;而在b中,括号改变了优先级,先计算括号内的1+2,得到3,然后再乘以3,得到最终结果9。

三、比较运算符

比较运算符用于比较两个值之间的大小。同级别的操作符按从左向右的顺序结合,比较运算符的优先级要低于算术运算符,高于逻辑运算符。比较运算符的优先级从高到低按照:比较运算符(>, <, >=, <=)、等于运算符(==, !=)。

x = 3 + 5 > 7 and 2 ** 3 > 9 or 4 != 4

print(x) #False

在以上代码中,由于>和**的优先级相同,按照从左往右的顺序进行计算,因此,先计算3+5>7,得到True,然后再计算2 ** 3 > 9,由于2 ** 3等于8,不大于9,所以为False。接下来按照从左往右的顺序计算and和or,最终结果为False。

四、逻辑运算符

逻辑运算符是用来组合真值表达式的,包括and与、or或、not非。在同一表达式中,not的优先级最高,and优先级次之,or优先级最低。同级别的操作符按从左向右的顺序结合。

x = True or False and not True

print(x) #True

在以上代码中,由于not的优先级最高,按照从左往右的顺序计算not True,得到False。接着,and的优先级次之,按照从左往右的顺序计算False and False,得到False。最后,按照从左往右的顺序计算True or False,由于or的优先级最低,所以其结果为True。

五、位运算符

位运算符用于对二进制数进行操作,这里介绍最基本的位运算符:按位与&、按位或|、按位取反~和按位异或^。按位运算符的优先级是低于比较运算符和逻辑运算符的。对于同一优先级下的多个按位运算符,按从左向右的顺序结合。

a = 60 #二进制为0011 1100

b = 13 #二进制为0000 1101

c = a & b #二进制为0000 1100,即十进制为12

print(c) #12

在以上代码中,a和b的二进制分别为0011 1100和0000 1101,进行按位与运算后得到0000 1100,即十进制为12。

六、总结

通过本文的介绍,我们学习了Python中常用的操作符优先级和结合性,其中算术运算符的优先级最高,按位运算符的优先级最低。同级别的操作符按从左向右的顺序结合。掌握操作符的优先级和结合性可以帮助我们更加高效地编写代码,减少因表达式计算顺序不当而带来的错误。

后端开发标签