Z
ZHANK
基础入门

运算符

掌握算术、比较、逻辑、赋值等运算符的使用

运算符

运算符是对数据进行计算和比较的符号。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()  # 换行

二、比较运算符

返回布尔值 TrueFalse

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 最好

小结

  1. 算术+ - * / // % **/ 总是返回 float
  2. 比较== != > < >= <=,支持链式比较
  3. 逻辑and or not,有短路求值
  4. 赋值+= -= *= 等,支持多重赋值和变量交换
  5. 成员in not in 检查是否存在
  6. 身份is 判断同一对象,比较 None 时用 is
  7. 不确定优先级时加括号

小练习

  1. 计算 2 ** 3 + 10 // 3 * 2 的结果
  2. 手动验证:not (5 > 3 and 2 < 1) 是 True 还是 False?
  3. 写一个表达式,当 age 在 13~19 之间时返回 True

💬 下一章预告:学完运算符,下一章深入学习字符串详解——文本处理是编程中最常用的操作之一。