一、什么是运算符?
在 Python 编程中,运算符(Operators) 是用于对变量和值执行特定操作的符号。它们是构建程序逻辑的核心工具,就像数学中的加减乘除一样。
例如:
a = 10 + 5 # + 是加法运算符
二、Python 运算符分类概览
类别 |
运算符 |
说明 |
算术运算符 |
|
数值计算 |
比较运算符 |
|
比较大小,返回布尔值 |
赋值运算符 |
|
给变量赋值 |
逻辑运算符 |
|
逻辑判断 |
成员运算符 |
|
判断元素是否在序列中 |
身份运算符 |
|
判断两个变量是否指向同一对象 |
位运算符 |
|
|
💡 本文将重点讲解前六类最常用运算符。
三、算术运算符(Arithmetic Operators)
用于执行基本的数学运算。
运算符 |
名称 |
示例 |
结果 |
|
加法 |
|
|
|
减法 |
|
|
|
乘法 |
|
|
|
除法 |
|
|
|
整除(地板除) |
|
|
|
取余(模运算) |
|
|
|
幂运算 |
|
|
详细说明:
1. /
与 //
的区别
print(10 / 3) # 3.3333333333333335 (浮点数)
print(10 // 3) # 3 (整数)
print(10.0 // 3) # 3.0 (结果为 float,但值是整数部分)
✅ //
总是向下取整(向负无穷方向)。
2. %
取余运算
print(10 % 3) # 1
print(-10 % 3) # 2 (结果为正数,遵循数学定义)
3. **
幂运算
print(2 ** 3) # 8
print(4 ** 0.5) # 2.0 (平方根)
四、比较运算符(Comparison Operators)
用于比较两个值,返回布尔值(True
或 False
)。
运算符 |
名称 |
示例 |
结果 |
|
等于 |
|
|
|
不等于 |
|
|
|
大于 |
|
|
|
小于 |
|
|
|
大于等于 |
|
|
|
小于等于 |
|
|
使用示例:
age = 25
price = 19.99
name = "Alice"
print(age == 25) # True
print(price != 20.00) # True
print(age > 18) # True
print(name == "alice") # False (区分大小写)
⚠️ 注意:==
是比较,=
是赋值!
五、赋值运算符(Assignment Operators)
用于给变量赋值。
运算符 |
示例 |
等价于 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用示例:
x = 10
print(x) # 10
x += 5 # 相当于 x = x + 5
print(x) # 15
x *= 2 # 相当于 x = x * 2
print(x) # 30
x **= 2 # 相当于 x = x ** 2
print(x) # 900
✅ 优势:代码更简洁,是 Python 编程中的常见写法。
六、逻辑运算符(Logical Operators)
用于组合多个条件,返回布尔值。
运算符 |
含义 |
真值表 |
示例 |
|
与(都为真才真) |
|
|
|
或(有一个真就真) |
|
|
|
非(取反) |
|
|
使用示例:
age = 25
is_student = True
has_job = False
# and: 年龄大于18 且 是学生
print(age > 18 and is_student) # True
# or: 是学生 或 有工作
print(is_student or has_job) # True
# not: 不是学生
print(not is_student) # False
# 复杂条件
can_vote = age >= 18 and not has_job
print(can_vote) # True(假设 25 岁且无工作)
💡 短路求值:and
遇到 False
立即返回 False
,or
遇到 True
立即返回 True
,后面的表达式不再计算。
七、成员运算符(Membership Operators)
用于检查一个值是否在序列(如字符串、列表、元组、字典的键)中。
运算符 |
含义 |
示例 |
结果 |
|
在...中 |
|
|
|
不在...中 |
|
|
使用示例:
fruits = ["苹果", "香蕉", "橙子"]
name = "Alice"
student = {"name": "Bob", "age": 20}
print("苹果" in fruits) # True
print("葡萄" not in fruits) # True
print("A" in name) # True
print("z" in name) # False
# 字典中检查的是**键**(key)
print("name" in student) # True
print("Bob" in student) # False ("Bob" 是值,不是键)
print("Bob" in student.values()) # True (检查值)
✅ 应用场景:验证用户输入、检查列表中是否存在某元素。
八、身份运算符(Identity Operators)
用于判断两个变量是否指向同一个对象(内存地址相同)。
运算符 |
含义 |
示例 |
|
是同一个对象 |
|
|
不是同一个对象 |
|
与 ==
的区别:
==
比较的是值是否相等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 的引用,指向同一对象)
# 特殊情况:小整数和短字符串的缓存
x = 100
y = 100
print(x is y) # True (Python 缓存了小整数)
x = 1000
y = 1000
print(x is y) # 可能为 False (大整数不缓存,取决于实现)
print(x == y) # True
⚠️ 建议:通常使用 ==
比较值,is
仅用于与 None
比较:
if user is None:
print("用户未登录")
九、运算符优先级(Operator Precedence)
当表达式中包含多个运算符时,Python 会按照优先级顺序执行。
优先级从高到低(部分):
优先级 |
运算符 |
说明 |
1 |
|
幂运算 |
2 |
|
正负号、按位取反 |
3 |
|
乘、除、整除、取余 |
4 |
|
加、减 |
5 |
|
比较 |
6 |
|
逻辑非 |
7 |
|
逻辑与 |
8 |
|
逻辑或 |
9 |
|
赋值 |
使用括号 ()
控制优先级
result = 10 + 5 * 2 # 先乘后加 → 20
result = (10 + 5) * 2 # 先加后乘 → 30
complex_cond = (age > 18 and is_student) or (has_license and not has_debt)
✅ 最佳实践:使用括号明确表达意图,提高代码可读性。
十、综合示例:学生成绩判断系统
# 学生信息
name = "张三"
score = 85
is_attendance_good = True
has_submitted_project = True
# 判断是否优秀
is_excellent = (score >= 90) and is_attendance_good
print(f"{name} 是否优秀?{is_excellent}") # False
# 判断是否有资格参加竞赛
can_compete = (score >= 80) and has_submitted_project
print(f"{name} 能参加竞赛吗?{can_compete}") # True
# 判断是否需要补考
needs_retake = score < 60
print(f"{name} 需要补考吗?{needs_retake}") # False
# 使用成员运算符检查科目
subjects = ["数学", "语文", "英语"]
print("数学" in subjects) # True
print("物理" not in subjects) # True
十一、总结:运算符核心要点
类别 |
关键点 |
使用场景 |
算术 |
|
数值计算 |
比较 |
返回 |
条件判断 |
赋值 |
|
变量更新 |
逻辑 |
|
组合条件 |
成员 |
|
验证、搜索 |
身份 |
|
判断是否为同一对象 |
学习建议:
- 熟练掌握算术、比较、赋值运算符—— 这是最基础的。
- 理解
and
/or
/not
的逻辑,它们是构建复杂条件的关键。 - 善用
in
检查列表、字符串中的元素。 - 记住
==
与is
的区别,避免常见陷阱。 - 使用括号
()
明确优先级,让代码更清晰。
📌 动手练习:
- 写一个程序,判断一个年份是否为闰年。
- 检查一个字符串是否包含特定关键词。
- 判断用户是否有权限访问某个功能(需满足多个条件)。
# 闰年判断(能被4整除但不能被100整除,或者能被400整除)
year = 2024
is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
print(f"{year} 是闰年吗?{is_leap}")