运算符
掌握算术、比较、逻辑、赋值等运算符的使用
运算符
运算符是对数据进行计算和比较的符号。Python 提供了丰富的运算符,覆盖从简单算术到复杂逻辑判断。
学完本章你将掌握: 7 种运算符类型、优先级规则、常用技巧和陷阱。
一、算术运算符
基本数学运算:
python
a, b = 10, 3
print(a + b) # 13 加法
print(a - b) # 7 减法
print(a * b) # 30 乘法
print(a / b) # 3.333... 除法(总是返回 float)
print(a // b) # 3 整除(丢弃小数部分)
print(a % b) # 1 取余(模运算)
print(a ** b) # 1000 幂运算(10 的 3 次方)
💡 你知道吗:
/即使两个整数相除也返回float。想要整数结果用//。这是 Python 3 的重要变化(Python 2 中/对整数返回整数)。
取余运算的实用场景:
python
# 判断奇偶
for n in range(1, 11):
if n % 2 == 0:
print(f"{n} 是偶数")
else:
print(f"{n} 是奇数")
# 每 5 个换行
for i in range(1, 21):
print(i, end=" ")
if i % 5 == 0:
print() # 换行
二、比较运算符
返回布尔值 True 或 False:
python
x, y = 5, 10
print(x == y) # False 等于
print(x != y) # True 不等于
print(x > y) # False 大于
print(x < y) # True 小于
print(x >= 5) # True 大于等于
print(y <= 10) # True 小于等于
# 链式比较(Python 特色!)
age = 25
print(18 <= age <= 60) # True 年龄在 18-60 之间
# 等价于:age >= 18 and age <= 60
💡 你知道吗:Python 的链式比较
a < b < c等价于a < b and b < c,是其他语言少有的优雅写法。
三、逻辑运算符
python
age, has_ticket = 22, True
# and:两边都为 True 才返回 True
print(age >= 18 and has_ticket) # True
# or:至少一边为 True 就返回 True
is_weekend, is_holiday = False, True
print(is_weekend or is_holiday) # True
# not:取反
is_raining = False
print(not is_raining) # True
短路求值(重要!):
python
# and:左边为 False 时,右边不会执行
x = 0
print(x != 0 and 10 / x > 1) # False,不会执行 10/x(避免了除零错误)
# or:左边为 True 时,右边不会执行
name = "小明"
result = name or "匿名用户" # 如果 name 为空,使用默认值
print(result) # 小明
四、赋值运算符
python
n = 10
n += 5 # 等价 n = n + 5 → 15
n -= 3 # 等价 n = n - 3 → 12
n *= 2 # 等价 n = n * 2 → 24
n /= 4 # 等价 n = n / 4 → 6.0
n //= 2 # 等价 n = n // 2 → 3.0
n **= 3 # 等价 n = n ** 3 → 27.0
# 多重赋值(Python 特色)
a = b = c = 10 # 三个变量都是 10
x, y = 10, 20 # 同时赋值
x, y = y, x # 交换两个变量的值(无需临时变量!)
print(x, y) # 20 10
五、成员运算符
python
fruits = ["苹果", "香蕉", "橘子"]
print("苹果" in fruits) # True
print("西瓜" in fruits) # False
print("西瓜" not in fruits) # True
# 字符串也可以用 in
text = "Hello Python"
print("Python" in text) # True
print("Java" not in text) # True
# 字典的 in 检查键(key)
person = {"name": "小明", "age": 20}
print("name" in person) # True
print("小明" in person) # False(in 检查键,不是值)
print("小明" in person.values()) # True(用 values() 检查值)
六、身份运算符
python
# is:判断两个变量是否指向同一个对象(不是值相等!)
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a == b) # True — 值相等
print(a is b) # False — 不是同一个对象
print(a is c) # True — c 指向 a,是同一个对象
# is 常用于和 None 比较(推荐)
result = None
if result is None:
print("没有结果") # ✅ 推荐写法
if result == None:
print("没有结果") # ⚠️ 不推荐(可能被重载)
💡 关键区别:
==比较值,is比较身份(是否同一对象)。大多数情况用==,只有和None比较时才用is。
七、运算符优先级
从高到低(不一定要全记住,不确定时用括号):
() 括号(最高)
** 幂运算
* / // % 乘除取余
+ - 加减
< <= > >= == != 比较
not 逻辑非
and 逻辑与
or 逻辑或(最低)
python
# 不确定优先级?加括号,一目了然:
result = (10 + 5) * (3 - 1) # 30,明确先算加减
# 而不是:
result = 10 + 5 * 3 - 1 # 24,需要想优先级
八、字符串运算补充
python
# + 拼接
print("Hello " + "World") # Hello World
# * 重复
print("=" * 20) # ====================
# 字符串不能和数字直接拼接
age = 18
# print("我今年" + age + "岁") # ❌ TypeError
print("我今年" + str(age) + "岁") # ✅ 转换后拼接
print(f"我今年{age}岁") # ✅ f-string 最好
小结
- 算术:
+ - * / // % **,/总是返回 float - 比较:
== != > < >= <=,支持链式比较 - 逻辑:
and or not,有短路求值 - 赋值:
+= -= *=等,支持多重赋值和变量交换 - 成员:
innot in检查是否存在 - 身份:
is判断同一对象,比较 None 时用is - 不确定优先级时加括号
小练习
- 计算
2 ** 3 + 10 // 3 * 2的结果 - 手动验证:
not (5 > 3 and 2 < 1)是 True 还是 False? - 写一个表达式,当
age在 13~19 之间时返回True
💬 下一章预告:学完运算符,下一章深入学习字符串详解——文本处理是编程中最常用的操作之一。