Python支持几十种运算符,都被划分为将近二十个优先级。有限集合结合性不尽相同。
运算符 | 说明 | 优先级 | 结合性 |
---|---|---|---|
( ) | 小括号 | 19 | 无 |
[ ] | 索引运算符 | 18 | 左 |
. | 属性访问 | 17 | 左 |
** | 乘方 | 16 | 左 |
~ | 按位取反 | 15 | 右 |
+ / - | 符号运算符(正号、负号) | 14 | 右 |
*、/、//、% | 乘除 | 13 | 左 |
+、- | 加减 | 12 | 左 |
>>、<< | 移位 | 11 | 左 |
& | 按位与 | 10 | 右 |
^ | 按位异或 | 9 | 左 |
| | 按位或 | 8 | 左 |
==、!= 、>、>=、<、<= | 比较运算符 | 7 | 左 |
is、not is | 身份运算符 | 6 | 左 |
in、not in | 成员运算符 | 5 | 左 |
not | 逻辑非 | 4 | 右 |
and | 逻辑与 | 3 | 左 |
or | 逻辑或 | 2 | 左 |
= | 赋值运算符 | 1 | 右 |
说明
1、当一个表达式中出现多个运算符时,Python会先比较各个运算符的优先级别,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果具有左结合性的就先执行左边的运算符,如果具有右结合性的就先执行右边的运算符。
2、不要把表达式写的过于复杂,如果一个表达式过于复杂,可以尝试把它拆分开来写。
3、不要过多地以来运算符的优先级来控制表达式的执行顺序,否则可读性太差,应尽量使用()来控制表达式的执行顺序。