Python运算符有哪些?算术、比较、逻辑与赋值运算分类详解
本文系统详解Python四大核心运算符:算术、比较、逻辑与赋值运算符,剖析工作机制、短路求值、is与==的核心差异以及运算优先级,并附带直观图解与实用示例。
一、Python 四大核心运算符总览
计算机程序本质上是由数据与操作构成的。运算符正是指导 Python 解释器对数据实施特定规则处理的指令代号。根据操作目标与返回结果类型的不同,四大基础运算体系分工明确:
- 算术运算符:用于数值计算(如加减乘除、求余、乘方),输入数值,输出数值结果。
- 比较运算符:用于度量两个对象之间的大小或等价关系,结果固定返回布尔值(
True或False)。 - 逻辑运算符:用于连接多个布尔判断条件,支持“短路求值”特性,决定控制流程的走向。
- 赋值运算符:负责将计算结果存储或更新到指定变量中,涵盖基础赋值与组合简写形式。
二、算术运算符:数值计算与精度规则
Python 提供了 7 种标准的算术运算符。除了常见的加减乘除之外,Python 专门区分了真除法与地板除法(整除),并提供了便捷的求模与乘方运算。
| 运算符 | 名称 | 表达式示例 | 运算结果 | 说明 |
|---|---|---|---|---|
+ |
加法 | 5 + 2 |
7 |
计算两数之和;亦可用于序列拼接(如字符串、列表) |
- |
减法 | 5 - 2 |
3 |
求两数之差;单个前缀表示求负数 |
* |
乘法 | 5 * 2 |
10 |
求两数乘积;亦可用于序列重复 |
/ |
真除法 | 5 / 2 |
2.5 |
永远返回浮点数(即使能整除,如 4 / 2 返回 2.0) |
// |
地板除(整除) | 5 // 2 |
2 |
向下取整,保留不大于商的最大整数 |
% |
取模(求余) | 5 % 2 |
1 |
计算除法的余数,满足 a == (a // b) * b + (a % b) |
** |
幂运算(乘方) | 5 ** 2 |
25 |
相当于 5 的 2 次方;优先级高于普通乘除 |
实战关键:真除法 / 与整除 // 的差异
初学者最容易忽略的是负数参与整除运算的表现。Python 中的 // 是严格向负无穷方向“向下取整”(Floor),而不是简单截断小数部分。
# 示例:正数除法与负数除法的向下取整表现
print(7 / 2) # 输出: 3.5 (float)
print(7 // 2) # 输出: 3 (向下取整)
print(-7 // 2) # 输出: -4 (向负无穷方向取整,-3.5 变为 -4,而非截断成 -3)
print(-7 % 2) # 输出: 1 (计算公式: -7 - (-4 * 2) = 1)
三、赋值运算符与复合运算状态流转
赋值运算符用于将右侧表达式的计算结果赋予左侧的变量标识符。最基础的赋值符号是单个等号 =。在此基础上,Python 提供了将算术运算与赋值合并的复合赋值运算符。
复合赋值的核心优势不仅在于书写简练,还能使代码意图更聚焦。例如 x += 1 直接表达“变量自增 1”,避免重复书写变量名。
常见复合赋值对应关系如下:
x += 3等价于x = x + 3x -= 2等价于x = x - 2x *= 4等价于x = x * 4x /= 2等价于x = x / 2x //= 2等价于x = x // 2x %= 3等价于x = x % 3x **= 2等价于x = x ** 2
四、比较运算符:值等价与对象同一性的区别
比较运算符用于检验两端数据是否满足特定关系,其表达式结果固定为 True 或 False。包含:
==:等于,比较两端的值或内容是否相同。!=:不等于,内容不同时为 True。>/<:大于 / 小于。>=/<=:大于等于 / 小于等于。
关键对照:== 与 is 的本质差异
在条件判断中,开发者经常需要面对“相等”这一问题。Python 中存在两套判断机制:值比较(==)与同一性比较(is)。理解二者的区别对避免逻辑缺陷至关重要:
==比较内容:调用对象的__eq__()方法,只要两个对象的数据内容一致就返回True,哪怕它们是存放于不同内存区域的两个独立实例。is比较身份:比较两个变量是否指向同一个内存地址(即id(a) == id(b))。通常用于判断是否是单例对象(如None)。
# == 与 is 的典型对照示例
list_a = [1, 2, 3]
list_b = [1, 2, 3]
list_c = list_a
print(list_a == list_b) # True: 两个列表的内容完全一致
print(list_a is list_b) # False: 内存地址不同,属于两个独立对象 (id(list_a) != id(list_b))
print(list_a is list_c) # True: list_c 引用了同一个对象
# 判空规范建议
val = None
if val is None: # 正确且高效的写法
pass
五、逻辑运算符与短路求值机制
逻辑运算符用于组合多个布尔表达式,Python 支持三个关键词:and(与)、or(或)以及 not(非)。
| 运算符 | 名称 | 规则概述 | 经典表达式 |
|---|---|---|---|
and |
逻辑与 | 两个操作数均视为真时才返回后者的值;只要遇到假值立即终止并返回该假值 | True and False → False |
or |
逻辑或 | 两个操作数中只要有一个为真即返回该真值;全假时返回后者 | False or True → True |
not |
逻辑非 | 单目运算符,对布尔结果取反 | not True → False |
and 和 or 返回的是最终决定该表达式真假值的那个原始对象。例如 "hello" or "world" 会直接返回 "hello";而 [] or [1, 2] 会返回 [1, 2]。
六、运算符优先级与工程编码规范
当一行表达式中同时包含多种运算符时,Python 会按照既定的优先级规则自上而下计算。如果同级,则通常从左往右结合(除乘方 ** 具有从右往左结合的特殊性外)。
连环比较(Chained Comparisons)的语法糖
Python 允许写出符合数学直觉的连续比较语句。例如表达式 1 < x < 10,在底层等价于 (1 < x) and (x < 10),但其中的中间表达式 x 只会被求值一次。这比许多其他语言中必须显式写 and 更加干净高效。
# 示例:连续比较
score = 85
if 80 <= score < 90:
print("良好") # 正常输出:良好
七、总结
掌握 Python 的运算符体系是编写稳健逻辑的基石:
- 算术运算关注精度与除法特性:
/产生浮点数,//是向负无穷取整。 - 比较运算厘清对象语义:日常数据比对用
==,单例对象判断用is。 - 逻辑运算利用好短路保护机制:
and与or可用于规避空指针和提升执行效率。 - 赋值运算善用复合简写,同时在复杂条件混合运算时,主动添加圆括号是保证逻辑准确与维护便利的最佳工程实践。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













