Python运算符有哪些:算术、比较、逻辑等7类详解

南乔
南乔
发布时间:2026-11-02 | 5人浏览过
原创

全面梳理Python中的7类核心运算符:算术、比较、逻辑、赋值、位运算、成员及身份运算符,深入分析短路求值、底层内存比对与优先级规则,配有图解与代码示例。

在 Python 编程中,运算符是用于对变量和数值执行运算操作的特殊符号。Python 语言一共包含 7 大类核心运算符:算术运算符、比较(关系)运算符、逻辑运算符、赋值运算符、位运算符、成员运算符以及身份运算符。本文将依次拆解这 7 类运算符的具体功能、语法细节、运行机制与实际使用场景,帮助你在编写逻辑与处理数据时做到清晰准确。

Python运算符有哪些:算术、比较、逻辑等7类详解
图 1:Python 7 大类运算符分类与核心机制总览

一、算术运算符:基础数学计算与边界规则

算术运算符用于执行加减乘除等标准数学运算。在 Python 3 中,除法行为有着明确的类型划分:

运算符 名称 示例表达式 运算结果说明
+ 加法 7 + 3 相加得 10,亦可用于字符串或列表拼接
- 减法 7 - 3 相减得 4,或表示负数取反
* 乘法 7 * 3 相乘得 21,亦可用于序列重复
/ 真除法 7 / 2 得 3.5。无论整除与否,始终返回 float 类型
// 向下整除 7 // 2 得 3。向负无穷方向取整,例如 -7 // 2 得到 -4
% 取模(求余) 7 % 3 得 1。余数符号满足 a = (a // b) * b + (a % b)
** 幂运算 2 ** 3 得 8。右结合性,2 ** 3 ** 2 等于 2 ** 9 = 512
# 算术运算符示例
a = 15
b = 4

print("真除法 a / b :", a / b)     # 输出 3.75 (浮点数)
print("整除 a // b   :", a // b)    # 输出 3 (向负无穷截断)
print("取模 a % b    :", a % b)     # 输出 3
print("幂运算 a ** 2  :", a ** 2)    # 输出 225

# 负数整除与取模的边界测试
print("-15 // 4     :", -15 // 4)   # 输出 -4 (而不是 -3)
print("-15 % 4      :", -15 % 4)    # 输出 1 (-4 * 4 + 1 = -15)

二、比较运算符:关系判定与链式比较

比较运算符用来测试两个对象之间的关系,返回结果严格为布尔值 True 或 False。包含等于 ==、不等于 !=、大于 >、小于 <、大于等于 >= 与小于等于 <=。

Python 支持极其直观的链式比较(Chained Comparisons)语法。例如 1 < x < 10,在底层等价于 (1 < x) and (x < 10),并且中间的表达式只会求值一次。

x = 5
print(1 < x < 10)       # 输出 True,等价于 (1 < x) and (x < 10)
print(10 > x == 5)      # 输出 True,等价于 (10 > x) and (x == 5)

# 比较自定义列表内容
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2)   # 输出 True,== 会递归比对容器内所有元素的值

三、逻辑运算符:布尔逻辑与短路求值

Python 中的逻辑运算符包含 and(逻辑与)、or(逻辑或)和 not(逻辑非)。在 Python 中,逻辑运算符不仅作用于纯布尔值,还可以操作任意对象。在求值过程中,Python 会采用短路求值(Short-circuit Evaluation)机制:

  • A and B:如果 A 为假,则整个表达式必然为假,此时直接返回 A,根本不执行也不计算 B;如果 A 为真,则取决于 B,计算并返回 B。
  • A or B:如果 A 为真,则整个表达式必然为真,此时直接短路返回 A,不计算 B;如果 A 为假,则计算并返回 B。
  • not A:对 A 进行真值判断后取反,固定返回 True 或 False。
Python运算符有哪些:算术、比较、逻辑等7类详解
图 2:Python 逻辑运算符短路机制与求值决策路径
# 逻辑短路特性示例
def trigger():
    print("函数被调用了!")
    return True

# 1. and 短路:第一个操作数为假,右侧函数不会执行
result1 = False and trigger()
print("result1:", result1)   # 输出 False,控制台不会打印"函数被调用了!"

# 2. or 短路:第一个操作数为真,右侧函数不会执行
result2 = "默认值" or trigger()
print("result2:", result2)   # 输出 '默认值'

# 3. 返回原对象而不是固定返回布尔类型
print([] and "abc")          # 输出 []
print("python" and "rocks")  # 输出 'rocks'

四、赋值运算符:变量绑定与复合赋值机制

赋值运算符负责将右侧表达式的结果绑定至左侧的变量名。除了基本赋值 = 以外,Python 还提供了将算术或位运算与赋值结合的复合赋值运算符:

  • 算术复合赋值:+=、-=、*=、/=、//=、%=、**=。
  • 位运算复合赋值:&=、|=、^=、<<=、>>=。

注意复合赋值在不同数据类型上的机制差异:对于不可变对象(如整数、浮点数、元组、字符串),x += 1 会创建新对象并重新绑定变量;而对于可变对象(如列表),list_a += [4] 会调用 __iadd__ 方法在原有内存地址上原处追加(In-place mutation),其效果相当于 list_a.extend([4]),不会生成新的列表对象。

五、位运算符:二进制位级操作与掩码原理

位运算符直接作用于整数的二进制补码形态,常用于系统级权限管理、底层协议打包和状态掩码操作。Python 包含 6 种位运算符:

  • &(按位与):两位都为 1 时结果为 1,常用于提取特定标志位。
  • |(按位或):只要有一位为 1 结果就为 1,常用于设置标志位。
  • ^(按位异或):两位不同为 1,相同为 0,常用于反转位或简单加密。
  • ~(按位取反):每个二进制位取反,在补码系统中 ~x 等价于 -(x + 1)。
  • <<(左移):各二进制位向左移动指定位数,低位补 0。每左移一位相当于乘以 2。
  • >>(右移):各二进制位向右移动指定位数。每右移一位相当于向下整除 2。
Python运算符有哪些:算术、比较、逻辑等7类详解
图 3:位运算符二进制补码对齐与各操作结果解析

六、成员运算符:容器存在性检验与查找效率

成员运算符用于测试指定序列或集合中是否存在某个元素,关键字为 in 与 not in。其语法简单直观,但底层性能取决于具体的数据结构:

  • 在字符串、列表(List)、元组(Tuple)中:通过线性扫描比对元素,时间复杂度为 O(n)。
  • 在集合(Set)、字典(Dictionary)中:基于哈希表(Hash Table)直接定位,时间复杂度平均仅为 O(1)。
  • 在字典中使用 item in dict_obj 时,默认检索的是字典的键(Keys),若要检索值需明确使用 item in dict_obj.values()。
# 成员运算符用法
fruits = ["apple", "banana", "orange"]
print("apple" in fruits)         # 输出 True
print("grape" not in fruits)     # 输出 True

user_info = {"id": 101, "name": "Alice", "role": "admin"}
print("name" in user_info)       # 输出 True (检索键)
print("admin" in user_info)      # 输出 False (默认不检索值)
print("admin" in user_info.values()) # 输出 True (显式检索值)

七、身份运算符:内存地址比对与 None 判断规范

身份运算符包括 is 和 is not,用于判断两个变量是否引用内存中同一个对象(即内存地址是否相同,本质上是比对 id(x) == id(y))。

许多初学者容易混淆 == 与 is: == 比较的是对象的内容值(Value)是否相等; is 比较的是对象在内存中的身份标识(Identity)。

Python运算符有哪些:算术、比较、逻辑等7类详解
图 4:值比较 (==) 与身份判断 (is) 在内存引用层面的本质区别
# 比较与身份判定的对比
x = [1, 2, 3]
y = [1, 2, 3]
z = x

print("x == y :", x == y)   # True (值相同)
print("x is y :", x is y)   # False (两个独立列表对象,内存地址不同)
print("x is z :", x is z)   # True (指向同一块内存)

# 判断 None 的行业标准规范
target = None
if target is None:          # 正确且推荐的书写方式
    print("变量为 None")

八、运算符优先级与表达式推导步骤

当一个表达式中包含多种运算符时,Python 按照严格的优先级规则逐步计算。优先级高的运算符先计算;优先级相同时,绝大多数运算符按从左至右的结合性计算(幂运算符 ** 为右结合)。

Python运算符有哪些:算术、比较、逻辑等7类详解
图 5:复合表达式按优先级与结合性逐步推导求解的详细流程

工程编码建议:虽然 Python 具备详尽的运算符优先级判定规则,但在实际工程开发中,如果表达式超过两层逻辑组合,强烈建议使用小括号 () 显式指定运算顺序。这样不仅能彻底避免逻辑歧义,还能显著提升代码的可读性与团队协作维护效率。

九、总结与速查清单

梳理 Python 运算符体系时,可将关键规律归纳为以下四项原则:

  1. 数学除法选型:需要浮点精度用真除法 /,需要向下取整索引或分块时用 //,处理循环周期用 %。
  2. 短路利用需谨慎:and 与 or 返回的是决定结果的原操作数本身,可用于设置默认回退值(如 val or default),但应避免将产生副作用的函数调用置于可能被短路的位置。
  3. 值比对与身份比对分开:比对对象数据是否一致始终使用 ==;检查变量是否为单例或空值(如 None、True、False)始终使用 is。
  4. 集合加速检索:大规模频繁使用成员运算符 in 之前,优先将列表或元组转换为 set,将检索耗时从 O(n) 降低至 O(1)。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表