在数学中我们从小学就开始接触到运算符的优先级,比如2+3x5,我们都知道先算3x5,然后再相加,编程语言中也是一样,但是更加丰富,主要是因为编程语言中的逻辑运算符,算术运算符,比较运算符还有索引,位运算等等都会参与其中。
一、运算符优先级对照表
运算符说明 |
Python运算符 |
优先级 |
结合性 |
优先级顺序 |
小括号 |
( ) |
19 |
无 |
高 |
索引运算符 |
x[i] 或 x[i1: i2 [:i3]] |
18 |
左 |
|
属性访问 |
x.attribute |
17 |
左 |
|
乘方 |
** |
16 |
右 |
|
按位取反 |
~ |
15 |
右 |
|
符号运算符 |
+(正号)、-(负号) |
14 |
右 |
|
乘除 |
*、/、//、% |
13 |
左 |
|
加减 |
+、- |
12 |
左 |
|
位移 |
>>、<< |
11 |
左 |
|
按位与 |
& |
10 |
右 |
|
按位异或 |
^ |
9 |
左 |
|
按位或 |
| |
8 |
左 |
|
比较运算符 |
==、!=、>、>=、<、<= |
7 |
左 |
|
is 运算符 |
is、is not |
6 |
左 |
|
in 运算符 |
in、not in |
5 |
左 |
|
逻辑非 |
not |
4 |
右 |
|
逻辑与 |
and |
3 |
左 |
|
逻辑或 |
or |
2 |
左 |
|
逗号运算符 |
exp1, exp2 |
1 |
左 |
二、实例
运算符比较多,挑几个常用的出来给大家演示一下,有兴趣的可以在PyCharm自己去写一遍,看看优先级之间的关系。
a = b = 15
c = 20
e = 1.5
print(a + b * e)
print(a + b > e)
print(a % b > e)
返回结果:
37.5
True
False
当一个表达式中出现多个运算符时,Python 会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果是左结合性就先执行左边的运算符,如果是右结合性就先执行右边的运算符。