编程的本质是对数据进行操作,而运算符 (Operators) 正是操作数据的“指挥棒”。无论是简单的数学计算,还是复杂的逻辑判断,都离不开它们。
很多 Python 新手常在 is 和 == 的区别上栽跟头,或者搞不清 and 和 or 的执行顺序。我们不仅列出语法,更会通过实战代码告诉您“为什么这么用”。

算术运算符 (Arithmetic Operators)
这是最基础的一类,用于执行数学运算。但在 Python 中,除法和取模有一些特殊的细节需要注意。
| 运算符 | 描述 | 实例 (a=10, b=3) | 结果 |
+ |
加法 | a + b |
13 |
- |
减法 | a - b |
7 |
* |
乘法 | a * b |
30 |
/ |
真除法 (结果总是浮点数) | a / b |
3.333… |
% |
取模 (返回除法的余数) | a % b |
1 |
** |
幂运算 (a 的 b 次方) | a ** b |
1000 |
// |
整除 (向下取整) | a // b |
3 |
? 专家提示:除法与整除的区别
在 Python 3 中,/ 永远返回 float 类型,即使能除尽。如果您需要得到整数结果,请使用 //。具体细节可以参考 Python 官方数学运算文档 中的说明。
print(10 / 2) # 输出: 5.0 (float)
print(10 // 2) # 输出: 5 (int)
print(-10 // 3) # 输出: -4 (注意:是向下取整,向负无穷方向)
比较运算符 (Comparison Operators)
用于比较两个值,结果永远是布尔值:True 或 False。这在 if 语句和循环中至关重要。
-
==(等于) -
!=(不等于) -
>(大于) -
<(小于) -
>=(大于等于) -
<=(小于等于)
实战场景:
x = 5
y = 10
print(x == y) # False
print(x != y) # True
赋值运算符 (Assignment Operators)
除了基础的 =,Python 还支持复合赋值(如 +=),这能让代码更简洁。另外,Python 3.8 引入了备受争议但也非常强大的海象运算符。
常用复合赋值
-
c += a等效于c = c + a -
c *= a等效于c = c * a -
c //= a等效于c = c // a
? 海象运算符 (Walrus Operator :=)
它允许你在表达式内部为变量赋值。
不使用海象运算符:
# 需要先获取数据,再判断
data = input("请输入内容: ")
if len(data) > 0:
print(f"你输入了: {data}")
使用海象运算符:
# 赋值与判断同时进行,代码更紧凑
if (n := len(input("请输入内容: "))) > 0:
print(f"你输入了 {n} 个字符")
逻辑运算符 (Logical Operators)
逻辑运算符用于组合条件语句。理解它们的短路机制 (Short-circuit evaluation) 是写出高效代码的关键。
| 运算符 | 描述 | 逻辑规则 |
and |
与 | 只有两边都为 True,结果才为 True |
or |
或 | 只要有一边为 True,结果就为 True |
not |
非 | 反转布尔值 (True 变 False) |
⚠️ 易错点:短路求值
Python 解析器一旦能确定结果,就会停止往后执行。
a = 10
b = 0
# 因为 a > 5 是 True,Python 必须检查第二个条件
# 此时 b != 0 是 False,所以结果是 False
if a > 5 and b != 0:
print("Safe division")
# 如果 a > 5 是 False (例如 a=1),Python 根本不会去检查 b != 0
身份运算符 (Identity Operators)
这是 Python 特有的概念,用于比较两个对象的内存地址。
-
is: 判断两个变量是否引用同一个对象。 -
is not: 判断两个变量是否引用不同的对象。
深度解析:is vs ==
-
==比较的是 值 (Value)。 -
is比较的是 内存地址 (Memory ID)。
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 (它们是内存中两个不同的列表对象)
print(list_a is list_c) # True (它们指向同一个对象)
成员运算符 (Membership Operators)
用于测试一个序列(字符串、列表、元组、字典等)中是否包含指定的元素。
-
in -
not in
实战案例:
# 检查列表
fruits = ["apple", "banana"]
if "apple" in fruits:
print("Apple is in the list")
# 检查字典 (默认检查 Key)
user = {"name": "John", "age": 30}
if "name" in user:
print("Name key exists")
运算符优先级 (Operator Precedence)
当一个表达式中包含多个运算符时,Python 会按照优先级顺序执行。这是一个常见的 Bug 来源。
优先级从高到低(精简版):
-
**(指数) -
~,+,-(按位取反,一元加减) -
*,/,%,//(乘除) -
+,-(加减) -
<<,>>(位移) -
&(按位与) -
^,|(按位异或、或) -
<=,<,>,>=(比较) -
==,!=(等于) -
=,+=,-=(赋值) -
is,is not(身份) -
in,not in(成员) -
not,and,or(逻辑)
专家建议: 永远不要为了“炫技”而依赖隐晦的优先级。使用括号
()来明确你的意图,这能让代码可读性提升 10 倍。
8. PEP 8 规范与最佳实践
在编写包含运算符的代码时,代码的格式美观同样重要。根据 Python 官方的 PEP 8 风格指南:
-
空格的使用: 二元运算符(如
+,-,=,==)两边应各有一个空格。-
✅ 正确:
result = a + b -
❌ 错误:
result=a+b在 Python 3 中
-
-
例外情况: 在函数参数传递时,等号两边不加空格。
-
✅ 正确:
def functional(key=value):
-
-
注释: 复杂的运算逻辑旁边一定要加注释。
如果您想深入了解如何编写符合规范的 Python 代码,包括注释的艺术,强烈建议阅读我们的新手必读指南:
? Python 注释怎么写?新手必看的 PEP 8 规范与最佳实践
常见问题解答 (FAQ)
Q1: Python 中 ^ 是幂运算吗?
不是!在 Python 中,^ 是按位异或 (Bitwise XOR) 运算符。如果你想计算 $2^3$,请使用 2 ** 3,而不是 2 ^ 3。
Q2: 为什么 0.1 + 0.2 != 0.3?
这与运算符本身无关,而是浮点数在计算机底层的二进制存储精度问题。在进行精确的财务计算时,建议使用 decimal 模块。
Q3: and 和 & 有什么区别?
and 是逻辑运算符(判断真假),& 是位运算符(对二进制位进行操作)。在 Pandas 等数据分析库中,经常用 & 来连接多个条件,但这属于重载用法。
结语
掌握 Python 运算符 是通往编程高手的必经之路。从最基础的算术运算到高效的海象运算符,每一个符号都有其特定的应用场景。
记住,代码是写给人看的,只是顺便给机器执行。合理使用运算符,配合良好的注释和格式,才能写出优雅的代码。
更多 Python 学习资源和下载,欢迎访问我们的首页:Python下载。
