a + b * c,Python 会先计算乘法再计算加法;b * c的结果为 8,a + 8的结果为 24,所以 d 最终的值也是 24。先计算*再计算+,说明*的优先级高于+。| 运算符说明 | 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 | 左 |
4+4<<2
+的优先级是 12,<<的优先级是 11,+的优先级高于<<,所以先执行 4+4,得到结果 8,再执行 8<<2,得到结果 32,这也是整个表达式的最终结果。( ),也就是写成下面的样子:
(4+4) << 2
这样看起来就一目了然了,不容易引起误解。( )改变程序的执行顺序,比如:
4+(4<<2)
则先执行 4<<2,得到结果 16,再执行 4+16,得到结果20。( )来控制表达式的执行顺序。100 / 25 * 16,/和*的优先级相同,应该先执行哪一个呢?这个时候就不能只依赖运算符优先级决定了,还要参考运算符的结合性。/和*都具有左结合性,因此先执行左边的除法,再执行右边的乘法,最终结果是 64。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有