- 运算符优先级大全列表:
- 比较一:指数运算优先级比正负号优先级高
- 比较二:加减运算符比逻辑运算符优先级高
- 多种运算符结合
- 掌握多种运算优先级的先后
| 优先级顺序 | 运算符 | 运算符名称 |
|---|---|---|
| 1 | ** | 指数 |
| 2 | ~, +, - | 按位翻转,数前的正负号(注意非加减) |
| 3 | *, /, %, // | 乘、除、取模、取整 |
| 4 | +, - | 加、减 |
| 5 | >>, << | 二进制右移左移位 |
| 6 | & | 二进制按位与运算符 |
| 7 | ^, l | 二进制按位异或、或运算符 |
| 8 | ==, !=, <, >, >=, <= | 比较运算符 |
| 9 | =, %=, /=, //=, -=, +=, *=, **= | 赋值运算符 |
| 10 | is, is not | 身份运算符 |
| 11 | in, not in | 成员运算符 |
| 12 | not, or, and | 逻辑运算符 |
print(-2**4)
执行结果:
说明:
结果为-16,说明指数运算优先级高于数前正负号。
比较二:加减运算符比逻辑运算符优先级高
print(2 - 1 and True) print((2 - 1) and True) print(2 - (1 and True))
执行结果:
说明:
说明2-1的优先级高于1 and True的优先级,即加减运算符比逻辑运算符优先级高。
多种运算符结合
if (3+5)/2**2<2 and 8 is range(1):
print("yes")
else:
print("no")
化简程序部分:
if (3+5)/2**2<2 and 8 is range(1): => if 8/4<2 and 8 is range(1): => if False and False:
解析:
本代码中一共六个运算符:
首先最高优先级的是括号内的内容,即(3+5)=8;
其次优先级最高的为 ** 指数运算,即 2**2=4;
所以化简为 8/4<2 and 8 is range(1)
在化简后的部分里,最高的除法,其次是小于号,然后是is,最后是and。
所以再次化简:
2<2 and False: => False and False => False
掌握多种运算优先级的先后
如何掌握判断各种优先级的先后顺序,其实唯手熟儿。高中已经掌握了加减运算优先级低于乘除运算,括号内优先级最高;现在只要再记住指数运算 ** 最高,比较运算符高于逻辑运算符就好。其他的运算符非一般条件下不常用。



