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) 比较运算符

用于比较两个值,结果是布尔值 TrueFalse

运算符 描述 示例
== 等于 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. 注意事项

  1. 括号提升优先级: 使用括号可以显式地改变运算顺序。例如:

    result = (2 + 3) * 4 # 优先计算 2 + 3
  2. 链式比较: Python 支持链式比较,如:

    1 < x < 10 # 等同于 (1 < x) and (x < 10)
  3. 逻辑运算符的短路特性

  4. and:如果第一个条件为 False,后面的条件不再计算。
  5. or:如果第一个条件为 True,后面的条件不再计算。

作者:不灭蚊香

物联沃分享整理
物联沃-IOTWORD物联网 » python中的运算符和优先级

发表回复