Python运算符有哪些:算术、比较、逻辑与位运算分类详解

Oliver
Oliver
发布时间:2026-10-23| 6人浏览过
原创

在Python编程中,运算符是构建表达式与控制逻辑的基础符号。Python将运算符划分为若干明确类别,其中最核心且高频使用的是算术运算符、比较运算符、逻辑运算符以及按位运算符。本文系统梳理这四大类运算符的具体符号、运算行为、求值机制及边界细节,帮助读者在编写条件分支、数值计算与底层数据处理时建立准确清晰的运算心智模型。

Python运算符有哪些:算术、比较、逻辑与位运算分类详解
图1:Python四类主要运算符体系与分类概要

一、算术运算符:数值计算与求模细节

算术运算符用于执行标准数学运算。Python提供了7种常见的算术运算符,相较于C或Java等静态语言,Python在除法和负数取模方面有着特定的语义定义:

运算符 名称 说明 示例表达式 计算结果
+ 加法 数值相加,或序列对象(如列表、字符串)拼接 7 + 3 10
- 减法 数值相减,也可作一元负号 7 - 3 4
* 乘法 数值相乘,或序列的重复扩充 7 * 3 21
/ 真除法 标准除法,返回值恒为浮点数 float 7 / 2 3.5
// 地板除(整除) 向负无穷方向向下取整,保留整数部分 7 // 2 / -7 // 2 3 / -4
% 取模(求余) 满足关系式:r = a - (a // b) * b 7 % 3 / -7 % 3 1 / 2
** 幂运算 求底数的指数次方,相当于 pow(a, b) 2 ** 3 8

1. 真除法与地板除的区别

在Python 3中,单个斜杠 / 称为“真除法”,即使两边操作数均为整型且能整除,结果也始终是浮点数,例如 4 / 2 得到 2.0。如果需要整型结果,应显式使用地板除 //。

2. 负数地板除与取模计算准则

很多开发者在计算带负数的整除和求模时容易产生困惑。Python的 // 采用向下取整(Floor Division),即朝数轴左侧(负无穷方向)靠拢:

# 示例代码:整除与模运算行为验证
print(7 // 2)    # 示例输出: 3
print(-7 // 2)   # 示例输出: -4 (向负无穷靠拢,而不是截断成-3)

print(7 % 3)     # 示例输出: 1
print(-7 % 3)    # 示例输出: 2  因为: -7 - (-7 // 3) * 3 = -7 - (-3 * 3) = 2
print(7 % -3)    # 示例输出: -2 因为: 7 - (7 // -3) * -3 = 7 - (-3 * -3) = -2

由此可见,Python的余数符号总是与除数(右操作数)保持一致,这在处理周期性环形索引(如日期轮转或轮询缓冲)时极其方便。

二、比较运算符:数值关系与链式比较

比较运算符用来判定两个操作数之间的大小或等价关系,其运算结果始终是布尔类型(True 或 False)。

  • ==:等于,比较两端的值是否相等(通过调用 __eq__)。
  • !=:不等于,值不同时返回 True。
  • >、<:大于、小于。
  • >=、<=:大于等于、小于等于。
Python运算符有哪些:算术、比较、逻辑与位运算分类详解
图2:Python链式比较特性的内部解构与执行推导

链式比较语法(Chained Comparison)

许多语言中书写 10 < x < 20 会因先计算 10 < x 返回布尔值而引发逻辑错误。但Python原生支持数学意义上的链式比较:表达式 a < b < c 等价于 (a < b) and (b < c),且中间子表达式 b 仅被求值一次。如果 b 是一个复杂的函数调用,这种机制既直观又避免了重复计算开销。

三、逻辑运算符与短路求值机制

Python的逻辑运算符由英文关键词构成:and(与)、or(或)以及 not(非)。它们并非仅仅针对布尔值,而是能够处理任意类型的操作数。

Python运算符有哪些:算术、比较、逻辑与位运算分类详解
图3:Python逻辑运算短路求值与对象返回决策树

真值与操作数原样返回

在Python中,空值(None)、零值(0, 0.0)、空容器("", [], (), {}, set())的布尔真值均为假(Falsy),其余通常为真(Truthy)。

特别需要注意的是:and 和 or 运算符并不把结果强制转换为布尔型,而是直接返回最后决定表达式真假的操作数原对象:

# 示例代码:逻辑运算返回原对象演示
user_name = ""
display_name = user_name or "匿名用户"
print(display_name)  # 示例输出: '匿名用户'

data = [1, 2, 3]
first_elem = data and data[0]
print(first_elem)    # 示例输出: 1

四、位运算符:底层二进制位操作原理

位运算符将操作数视作二进制补码序列,在比特(Bit)级别逐位进行运算。Python的整数类型拥有任意精度(不会像C语言那样发生32位或64位溢出),但其补码逻辑与标准数学二进制保持一致。

运算符 符号 运算规则 示例(二进制) 十进制结果
按位与 & 两位均为 1 时结果为 1,否则为 0 0b1100 & 0b1010 -> 0b1000 12 & 10 = 8
按位或 | 两位中只要有 1 则结果为 1 0b1100 | 0b1010 -> 0b1110 12 | 10 = 14
按位异或 ^ 两位不同为 1,相同为 0(不进位加法) 0b1100 ^ 0b1010 -> 0b0110 12 ^ 10 = 6
按位取反 ~ 将每一位取反(0变1,1变0),数学上等于 -(x + 1) ~0b1100 -> -(12 + 1) ~12 = -13
左移位 << 二进制位向左移动,低位补0,相当于乘以 2^n 3 << 2 (0b0011 -> 0b1100) 12
右移位 >> 二进制位向右移动,高位补符号位,相当于整除 2^n 12 >> 2 (0b1100 -> 0b0011) 3
为什么 ~x 等于 -(x + 1)?
计算机内部整数均以二进制补码表示。正数 x 的反码将符号位(原本为0)变为了1,转换回有符号十进制时,其补码表示恰好对应数值 -(x + 1)。例如 ~5 == -6,~0 == -1。

五、运算符优先级与计算顺序总结

当多个不同类别的运算符出现在同一个表达式中时,Python会按照既定的运算符优先级来确定结合顺序。虽然掌握优先级能帮助阅读代码,但在编写生产环境代码时,优先使用圆括号 () 显式指定运算顺序是最佳工程实践,不仅消除了歧义,还大幅提升了代码的可读性。

Python运算符有哪些:算术、比较、逻辑与位运算分类详解
图4:Python运算符优先级从高到低层次梯队总结

常见陷阱与编写建议

  1. 混合位运算与比较运算:位运算符的优先级低于算术运算,但位与 & 和位或 | 的优先级低于比较运算符。例如 a & mask == 0 实际上会被解释为 a & (mask == 0),必须加括号写成 (a & mask) == 0。
  2. 短路逻辑中的副作用:由于 and 和 or 存在短路特性,若后置表达式包含产生副作用的函数调用或自增逻辑,该函数在短路触发时根本不会被执行。
  3. 链式赋值与比较:在条件分支中,切勿将赋值语句错误书写或与链式比较混淆;判断相等请务必检查是否为双等号 ==。
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。