在 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
,后面的条件不再计算。