Python 运算符大全:算术、比较、逻辑、位运算等核心用法
运算符类型
运算符是操作操作数值的构造。表达式 4 + 5 = 9 中,4 和 5 为操作数,+ 为运算符。
Python 支持以下运算符类型:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
Python 算术运算符
假设变量 a=10,b=20:
| 运算符 | 描述 | 示例 |
|---|---|---|
| + 加法 | 将运算符两侧的值相加 | a + b = 30 |
| - 减法 | 左操作数减去右操作数 | a – b = -10 |
| * 乘法 | 将运算符两侧的值相乘 | a * b = 200 |
| / 除法 | 左操作数除以右操作数 | b / a = 2 |
| % 取模 | 左操作数除以右操作数并返回余数 | b % a = 0 |
| ** 幂 | 对运算符执行指数(幂)计算 | a**b = 10 的 20 次方 |
| // 整除 | 除法运算中结果为去除小数点后数字的商。若操作数为负,结果向下取整(向负无穷方向) | 9//2=4, 9.0//2.0=4.0, -11//3=-4, -11.0//3=-4.0 |
Python 比较运算符
比较运算符两侧的值并决定关系。也称关系运算符。假设 a=10,b=20:
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 若两操作数值相等则条件为真 | (a == b) 不为真 |
| != | 若两操作数值不等则条件为真 | (a != b) 为真 |
| <> | 若两操作数值不等则条件为真 | (a <> b) 为真。类似 != 运算符 |
| > | 若左操作数大于右操作数则条件为真 | (a > b) 不为真 |
| < | 若左操作数小于右操作数则条件为真 | (a < b) 为真 |
| >= | 若左操作数大于等于右操作数则条件为真 | (a >= b) 不为真 |
| <= | 若左操作数小于等于右操作数则条件为真 | (a <= b) 为真 |
Python 赋值运算符
假设 a=10,b=20:
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 将右侧操作数值赋给左侧操作数 | c = a + b 将 a+b 的值赋给 c |
| += 加且赋值 | 右操作数加到左操作数并将结果赋给左操作数 | c += a 等价于 c = c + a |
| -= 减且赋值 | 左操作数减去右操作数并将结果赋给左操作数 | c -= a 等价于 c = c - a |
| *= 乘且赋值 | 左操作数乘以右操作数并将结果赋给左操作数 | c *= a 等价于 c = c * a |
| /= 除且赋值 | 左操作数除以右操作数并将结果赋给左操作数 | c /= a 等价于 c = c / a |
| %= 取模且赋值 | 用两操作数取模并将结果赋给左操作数 | c %= a 等价于 c = c % a |
| **= 幂且赋值 | 执行幂计算并将值赋给左操作数 | c **= a 等价于 c = c ** a |
| //= 整除且赋值 | 执行整除并将值赋给左操作数 | c //= a 等价于 c = c // a |
Python 位运算符
位运算符按位操作。假设 a=60,b=13,二进制为 0011 1100 和 0000 1101:
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
| 运算符 | 描述 | 示例 |
|---|---|---|
| & 按位与 | 若位在两操作数中均存在则复制到结果 | (a & b) (即 0000 1100) |
| | 按位或 | 若位在任一操作数中存在则复制 | (a | b) = 61 (即 0011 1101) |
| ^ 按位异或 | 若位仅在一操作数中设置则复制 | (a ^ b) = 49 (即 0011 0001) |
| ~ 按位取反 | 一元运算符,翻转位效果 | (~a ) = -61 (即 1100 0011,补码形式) |
| << 左移 | 左操作数值左移右操作数指定的位数 | a << 2 = 240 (即 1111 0000) |
| >> 右移 | 左操作数值右移右操作数指定的位数 | a >> 2 = 15 (即 0000 1111) |
Python 逻辑运算符
假设 a=10,b=20:
| 运算符 | 描述 | 示例 |
|---|---|---|
| and 逻辑与 | 若两操作数均为真则条件为真 | (a and b) 为真 |
| or 逻辑或 | 若任一操作数非零则条件为真 | (a or b) 为真 |
| not 逻辑非 | 反转操作数逻辑状态 | Not(a and b) 为假 |
Python 成员运算符
测试序列(字符串、列表、元组)中是否包含成员:
| 运算符 | 描述 | 示例 |
|---|---|---|
| in | 若在指定序列中找到变量则为真,否则为假 | x in y,若 x 是序列 y 成员则结果为 1 |
| not in | 若在指定序列中未找到变量则为真,否则为假 | x not in y,若 x 不是序列 y 成员则结果为 1 |
Python 身份运算符
比较两对象的内存地址:
| 运算符 | 描述 | 示例 |
|---|---|---|
| is | 若操作符两侧变量指向同一对象则为真,否则为假 | x is y,若 id(x) 等于 id(y) 则 is 结果为 1 |
| is not | 若操作符两侧变量指向同一对象则为假,否则为真 | x is not y,若 id(x) 不等于 id(y) 则 is not 结果为 1 |
Python 运算符优先级
以下表列出所有运算符,从最高优先级到最低:
| 序号 | 运算符与说明 |
|---|---|
| 1 | ** - 幂运算(乘方) |
| 2 | ~ + - - 取反、一元加减(方法名为 +@ 和 -@) |
| 3 | * / % // - 乘、除、取模、整除 |
| 4 | + - - 加、减 |
| 5 | >> << - 右移、左移位运算 |
| 6 | & - 按位与 |
| 7 | ^ | - 按位异或、按位或 |
| 8 | <= < > >= - 比较运算符 |
| 9 | <> == != - 相等运算符 |
| 10 | = %= /= //= -= += *= **= - 赋值运算符 |
| 11 | is is not - 身份运算符 |
| 12 | in not in - 成员运算符 |
| 13 | not or and - 逻辑运算符 |
Python