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
,后面的条件不再计算。
作者:不灭蚊香