跳转至

运算符与表达式

Python 支持丰富的运算符,用于执行各种数学、逻辑和比较操作。

1. 算术运算符 (Arithmetic)

运算符 描述 示例 a=10, b=3 结果
+ 加法 a + b 13
- 减法 a - b 7
* 乘法 a * b 30
/ 除法 (真除法) a / b 3.333...
// 整除 (地板除) a // b 3
% 取模 (余数) a % b 1
** 幂运算 a ** b 1000

注意

Python 3 中 / 总是返回浮点数,即使能整除 (如 4/2 -> 2.0)。如果需要整数请使用 //

2. 比较运算符 (Comparison)

比较结果总是返回布尔值 TrueFalse

运算符 描述
== 等于 (注意是两个等号)
!= 不等于
> / < 大于 / 小于
>= / <= 大于等于 / 小于等于

链式比较

Python 支持数学中常见的链式写法:

x = 5
if 0 < x < 10:  # 等价于 0 < x and x < 10
    print("x 在 0 到 10 之间")

3. 逻辑运算符 (Logical)

用于组合布尔条件。

运算符 描述 短路逻辑
and 与 (两个都为真) 如果第一个为假,不计算第二个
or 或 (只要一个为真) 如果第一个为真,不计算第二个
not 非 (取反) -
age = 25
is_student = False

if age > 18 and not is_student:
    print("成年非学生")

4. 赋值运算符 (Assignment)

运算符 示例 等价于
= x = 5 -
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3

Python 不支持自增/自减

Python 中没有 x++x-- 运算符。请使用 x += 1x -= 1

5. 成员运算符 (Membership)

用于检查序列(列表、元组、字符串、字典键)中是否存在某值。

运算符 描述
in 存在于
not in 不存在于
nums = [1, 2, 3]
print(1 in nums)       # True
print(5 not in nums)   # True

print("a" in "apple")  # True

6. 身份运算符 (Identity)

用于比较两个对象的内存地址是否相同(是否是同一个对象)。

运算符 描述
is 是同一个对象 (内存地址相同)
is not 不是同一个对象

is vs ==

  • ==: 比较是否相等 (Value Equality)
  • is: 比较引用是否相同 (Reference Equality)
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)

# 对 None 的判断应该始终使用 is
x = None
if x is None:
    pass

7. 运算符优先级

从高到低排列(部分):

  1. () (括号最优先)
  2. ** (幂)
  3. *, /, //, % (乘除)
  4. +, - (加减)
  5. ==, !=, >, < (比较)
  6. not
  7. and
  8. or

建议

记不住优先级没关系,尽量使用括号 () 来明确运算顺序,这也能增加代码可读性。

# 哪个先算?不确定就加括号
result = (a + b) * c > d and not e

本章小结

类型 关键词
算术 + - * / // % **
比较 == != > < >= <=
逻辑 and or not
成员 in, not in
身份 is, is not

练习题

  1. 计算器:编写代码,计算 100 除以 3 的商(整数)和余数。
  2. 逻辑判断:给定年份 year,判断是否是闰年。(闰年条件:能被 4 整除且不能被 100 整除,或者能被 400 整除)。
  3. 列表检查:有一个黑名单列表 blacklist = ["bad_user", "spammer"],输入一个用户名,如果不在黑名单中,打印 "Access Granted",否则打印 "Access Denied"。

下一章:程序控制流