python中的运算符和优先级
在 Python 中,运算符分为多种类型,包括算术运算符、比较运算符、逻辑运算符等。运算符之间有优先级规则,决定了表达式的计算顺序。
以下是 Python 中的运算符分类及优先级:
1. 运算符分类
(1) 算术运算符
用于数学运算:
| 运算符 | 描述 | 示例 |
|---|---|---|
+ |
加法 | 3 + 2 -> 5 |
- |
减法 | 3 - 2 -> 1 |
* |
乘法 | 3 * 2 -> 6 |
/ |
除法(浮点除法) | 5 / 2 -> 2.5 |
// |
整除(地板除法) | 5 // 2 -> 2 |
% |
取余 | 5 % 2 -> 1 |
** |
幂运算(指数) | 2 ** 3 -> 8 |
(2) 比较运算符
用于比较两个值,结果是布尔值 True 或 False:
| 运算符 | 描述 | 示例 |
|---|---|---|
== |
等于 | 3 == 3 -> True |
!= |
不等于 | 3 != 4 -> True |
> |
大于 | 5 > 3 -> True |
< |
小于 | 3 < 5 -> True |
>= |
大于等于 | 5 >= 5 -> True |
<= |
小于等于 | 3 <= 4 -> True |
(3) 逻辑运算符
用于逻辑判断:
| 运算符 | 描述 | 示例 |
|---|---|---|
and |
逻辑与 | True and False -> False |
or |
逻辑或 | True or False -> True |
not |
逻辑非 | not True -> False |
(4) 位运算符
用于按位操作:
| 运算符 | 描述 | 示例 |
|---|---|---|
& |
按位与 | 5 & 3 -> 1 |
| | | 按位或 | 5 | 3 -> 7 |
^ |
按位异或 | 5 ^ 3 -> 6 |
~ |
按位取反(补码) | ~5 -> -6 |
<< |
左移位 | 5 << 1 -> 10 |
>> |
右移位 | 5 >> 1 -> 2 |
(5) 赋值运算符
用于将值赋给变量:
| 运算符 | 描述 | 示例 |
|---|---|---|
= |
简单赋值 | x = 5 |
+= |
加法赋值 | x += 3 -> x = x + 3 |
-= |
减法赋值 | x -= 2 -> x = x - 2 |
*= |
乘法赋值 | x *= 4 -> x = x * 4 |
/= |
除法赋值 | x /= 2 -> x = x / 2 |
//= |
整除赋值 | x //= 2 |
%= |
取余赋值 | x %= 3 |
**= |
幂赋值 | x **= 2 |
&= |
按位与赋值 | x &= 1 |
|= |
按位或赋值 | x &= 1 |
^= |
按位异或赋值 | x ^= 3 |
<<= |
左移位赋值 | x <<= 2 |
>>= |
右移位赋值 | x >>= 2 |
(6) 成员运算符
用于判断某个值是否是序列的成员:
| 运算符 | 描述 | 示例 |
|---|---|---|
in |
如果在指定序列中返回 True |
'a' in 'apple' -> True |
not in |
如果不在指定序列中返回 True |
'b' not in 'apple' -> True |
(7) 身份运算符
用于比较两个对象的身份:
| 运算符 | 描述 | 示例 |
|---|---|---|
is |
判断两个对象是否是同一对象 | x is y -> True |
is not |
判断两个对象是否不是同一对象 | x is not y -> True |
2. 运算符优先级
运算符的优先级决定了在没有括号的情况下,表达式的计算顺序。以下是从高到低的优先级:
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | () |
圆括号 |
| 2 | ** |
幂运算 |
| 3 | +x, -x, ~x |
正负号、按位取反 |
| 4 | *, /, //, % |
乘、除、整除、取余 |
| 5 | +, - |
加法、减法 |
| 6 | <<, >> |
左移、右移 |
| 7 | & |
按位与 |
| 8 | ^ |
按位异或 |
| 9 | | |
按位或 |
| 10 | in, not in, is, is not, >, <, >=, <=, !=, == |
比较运算符 |
| 11 | not |
逻辑非 |
| 12 | and |
逻辑与 |
| 13 | or |
逻辑或 |
| 14 | =, +=, -=, *= 等 |
赋值运算符 |
3. 注意事项
-
括号提升优先级: 使用括号可以显式地改变运算顺序。例如:
result = (2 + 3) * 4 # 优先计算 2 + 3 -
链式比较: Python 支持链式比较,如:
1 < x < 10 # 等同于 (1 < x) and (x < 10) -
逻辑运算符的短路特性:
and:如果第一个条件为False,后面的条件不再计算。or:如果第一个条件为True,后面的条件不再计算。
作者:不灭蚊香