运算符大全|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators)

发布于 2025-09-11 分类: Python
系列文章: Python全方位教程
第 1 部分: Python语言概览|第一部分:Python入门与环境搭建 (Python Foundations) 第 2 部分: 搭建开发环境|第一部分:Python入门与环境搭建 (Python Foundations) 第 3 部分: Python基本语法与规范|第一部分:Python入门与环境搭建 (Python Foundations) 第 4 部分: 数据类型深入解析|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators) 第 5 部分: 运算符大全|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators) (当前) 第 6 部分: 条件与循环|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation) 第 7 部分: 数据结构高级操作|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation) 第 8 部分: 函数|第四部分:函数、模块与代码组织 (Functions, Modules & Code Organization) 第 9 部分: 模块与包|第四部分:函数、模块与代码组织 (Functions, Modules & Code Organization) 第 10 部分: 类与对象|第五部分:面向对象编程 (Object-Oriented Programming - OOP) 第 11 部分: OOP核心特性|第五部分:面向对象编程 (Object--Oriented Programming - OOP) 第 12 部分: 高级OOP主题|第五部分:面向对象编程 (Object-Oriented Programming - OOP) 第 13 部分: 迭代与生成|第六部分:高级Python编程 (Advanced Python) 第 15 部分: 内存管理与性能|第六部分:高级Python编程 (Advanced Python) 第 16 部分: 文件与目录操作|第七部分:Python标准库精选 (The Standard Library) 第 17 部分: 数据处理与序列化|第七部分:Python标准库精选 (The Standard Library) 第 18 部分: 网络与并发编程|第七部分:Python标准库精选 (The Standard Library) 第 20 部分: 系统交互|第七部分:Python标准库精选 (The Standard Library) 第 21 部分: 数据科学与分析入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 22 部分: Web开发入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 23 部分: GUI编程入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 24 部分: 图像处理入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 25 部分: 自动化脚本|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 26 部分: Python备忘单 (Cheatsheet)|第九部分:附录与资源 (Appendix & Resources) 第 27 部分: 常见面试题与解答|第九部分:附录与资源 (Appendix & Resources) 第 28 部分: 官方文档与其他学习资源链接|第九部分:附录与资源 (Appendix & Resources)

欢迎回来,未来的编程大师!在上一章,我们认识了Python世界的基础元素——数据类型。但光有这些“原材料”还不够,我们还需要工具来对它们进行加工、组合和比较。这些工具,就是运算符

如果说数据类型是乐高积木,那么运算符就是你那双充满创造力的手,让你能将积木拼接、拆分、比较大小,最终搭建出宏伟的城堡。本章将带你全面掌握Python中的各种运算符,从简单的加减乘除到复杂的逻辑判断,让你真正拥有“动手”创造的能力。准备好,让数据在你的指尖下“动”起来吧!

5.1 算术运算符:你的随身计算器

这是最直观、最常用的一类运算符,它们让你能像使用计算器一样对数字进行各种数学运算。

运算符 名称 描述 示例 结果
+ 两数相加 10 + 5 15
- 两数相减 10 - 5 5
* 两数相乘 10 * 5 50
/ 两数相除,结果总是浮点数 10 / 5 2.0
// 整除 两数相除,结果向下取整 10 // 3 3
% 取模 返回除法的余数 10 % 3 1
** x的y次方 2 ** 4 16
a = 10
b = 3

print(f"a + b = {a + b}")   # 输出: a + b = 13
print(f"a / b = {a / b}")   # 输出: a / b = 3.333... (真除法)
print(f"a // b = {a // b}") # 输出: a // b = 3 (地板除,向下取整)
print(f"a % b = {a % b}")   # 输出: a % b = 1 (求余数)
print(f"2 ** 10 = {2 ** 10}") # 输出: 2 ** 10 = 1024

一个有趣的应用+* 不仅能用于数字,还能“客串”到字符串和列表上!

# 字符串拼接
greeting = "Hello" + " " + "World"
print(greeting)  # 输出: Hello World

# 字符串重复
line = "-" * 20
print(line)      # 输出: --------------------

# 列表合并
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list) # 输出: [1, 2, 3, 4, 5, 6]

# 列表重复
zeros = [0] * 5
print(zeros)     # 输出: [0, 0, 0, 0, 0]

5.2 赋值运算符:给变量“贴标签”的快捷方式

赋值运算符用于将右侧的值赋给左侧的变量。最基本的就是 =。但为了代码更简洁,Python提供了一系列“复合赋值运算符”。

运算符 等价于 示例
= x = 5 x = 5
+= x = x + 5 x += 5
-= x = x - 5 x -= 5
*= x = x * 5 x *= 5
/= x = x / 5 x /= 5
//= x = x // 5 x //= 5
%= x = x % 5 x %= 5
**= x = x ** 5 x **= 5
# 初始值
score = 100

# 加分
score += 10  # 等价于 score = score + 10
print(f"加分后: {score}") # 输出: 加分后: 110

# 打折
price = 80
price *= 0.9 # 等价于 price = price * 0.9
print(f"九折后: {price}") # 输出: 九折后: 72.0

使用复合赋值运算符不仅能少打几个字,还能让你的代码意图更清晰,看起来更专业!

5.3 比较运算符:代码世界的“法官”

比较运算符用于比较两个值,然后返回一个布尔值:TrueFalse。它们是构建所有条件判断的基石。

运算符 描述 示例 结果
== 等于 5 == 5 True
!= 不等于 5 != 5 False
> 大于 5 > 3 True
< 小于 5 < 3 False
>= 大于等于 5 >= 5 True
<= 小于等于 5 <= 3 False

⚠️ 新手巨坑警告: 一定要区分 = (赋值) 和 == (比较)!

  • age = 18 的意思是:“把18这个值赋予给变量age”。
  • age == 18 的意思是:“检查age的值是不是等于18?”
password = "123"
user_input = "123"

# 检查密码是否正确
is_correct = (password == user_input)
print(f"密码正确吗? {is_correct}") # 输出: 密码正确吗? True

age = 20
# 检查是否成年
is_adult = (age >= 18)
print(f"是否成年? {is_adult}") # 输出: 是否成年? True

5.4 逻辑运算符:构建复杂判断的“连接词”

当你需要组合多个条件时,逻辑运算符就登场了。它们就像我们说话时的“并且”、“或者”、“不是”。

运算符 描述 示例 结果
and 两个条件都为True时,结果才为True True and False
or 只要有一个条件为True,结果就为True True or False
not 对布尔值取反 not True

生活中的例子:

  • and:要出门看电影,必须 “我有空 and 电影院在营业”。
  • or:午餐吃什么?可以 “吃米饭 or 吃面条”。
  • not:今天天气如何?“not (正在下雨)”。
age = 22
has_ticket = True

# 检查是否能进入酒吧 (年龄需大于等于21 并且 有票)
can_enter = (age >= 21) and has_ticket
print(f"可以进入吗? {can_enter}") # 输出: 可以进入吗? True

# 检查是否需要带伞 (外面在下雨 或者 天气预报说会下雨)
is_raining = False
forecast_rain = True
need_umbrella = is_raining or forecast_rain
print(f"需要带伞吗? {need_umbrella}") # 输出: 需要带伞吗? True

# 检查门是否不是锁着的
is_locked = False
is_open = not is_locked
print(f"门是开着的吗? {is_open}") # 输出: 门是开着的吗? True

5.5 身份运算符:检查是否为“同一个”

身份运算符用于比较两个对象是否是同一个对象,即它们在内存中的地址是否相同。这比 == 更严格。

运算符 描述 示例
is 判断两个标识符是不是引用自同一个对象 a is b
is not 判断两个标识符是不是引用自不同的对象 a is not b

想象一下,你有两个一模一样的杯子(内容、颜色、大小都一样),== 会告诉你它们是“相等的”。但 is 会告诉你,它们是两个独立的杯子

list_a = [1, 2, 3]
list_b = [1, 2, 3]
list_c = list_a

print(f"list_a == list_b: {list_a == list_b}") # True, 因为内容相等
print(f"list_a is list_b: {list_a is list_b}") # False, 因为它们是内存中两个独立的对象

print(f"list_a == list_c: {list_a == list_c}") # True, 内容相等
print(f"list_a is list_c: {list_a is list_c}") # True, 因为list_c只是list_a的另一个名字,指向同一个对象

通常,你会在检查一个变量是否为 None 时使用 is,这是一种Pythonic(地道的Python)写法:if my_var is None:

5.6 成员运算符:检查“在不在”里面

成员运算符用于测试序列(如字符串、列表、元组、集合、字典)中是否包含某个成员。

运算符 描述 示例
in 如果在指定的序列中找到值,返回True 5 in [1, 2, 3, 4, 5]
not in 如果在指定的序列中找不到值,返回True 10 not in [1, 2, 3, 4, 5]
my_pets = ["cat", "dog", "hamster"]

# 检查 "dog" 是否在我的宠物列表中
print("dog" in my_pets)     # 输出: True
# 检查 "fish" 是否在我的宠物列表中
print("fish" in my_pets)    # 输出: False

# 检查一个字母是否在字符串中
print("P" in "Python")      # 输出: True

# 检查一个键是否在字典中 (注意:只检查键)
user_info = {"name": "Bob", "age": 30}
print("age" in user_info)   # 输出: True
print("Bob" in user_info)   # 输出: False (因为 "Bob" 是值,不是键)

5.7 位运算符:深入计算机的底层世界 (选读)

位运算符直接操作整数的二进制位。在常规应用开发中不常用,但在底层编程、图像处理、加密等领域非常重要。你可以暂时跳过,或者作为兴趣了解。

运算符 名称 描述
& 按位与 对应位都为1时,结果才为1
| 按位或 对应位有一个为1时,结果就为1
^ 按位异或 对应位不同时,结果为1
~ 按位取反 0变1,1变0
<< 左移 所有位向左移动指定的位数
>> 右移 所有位向右移动指定的位数
# 5 的二进制是 0101
# 3 的二进制是 0011

a = 5
b = 3

print(a & b) # 0101 & 0011 = 0001 (结果是 1)
print(a | b) # 0101 | 0011 = 0111 (结果是 7)

5.8 运算符优先级:谁先谁后?

当一个表达式中包含多个运算符时,谁先计算?这就由运算符的优先级决定,和我们小学学的“先乘除后加减”是一个道理。

以下是一个简化的优先级顺序(从高到低):

  1. ** (幂)
  2. *, /, //, % (乘、除、整除、取模)
  3. +, - (加、减)
  4. >, <, ==, !=, >=, <= (比较运算符)
  5. is, is not (身份运算符)
  6. in, not in (成员运算符)
  7. not (逻辑非)
  8. and (逻辑与)
  9. or (逻辑或)
# 哪个会先计算?
result = 5 + 2 * 3 - 1
# 乘法优先级高,先算 2 * 3 = 6
# 然后从左到右算 5 + 6 - 1 = 10
print(result) # 输出: 10

终极秘诀:如果你记不住优先级,或者想让代码更清晰,请毫不犹豫地使用圆括号 ()!括号拥有最高的优先级,能强制改变运算顺序。

# 使用括号明确意图
result_clear = (5 + 2) * (3 - 1)
# 先算 (5 + 2) = 7
# 再算 (3 - 1) = 2
# 最后算 7 * 2 = 14
print(result_clear) # 输出: 14

太棒了!你现在已经掌握了Python的“十八般兵器”。你不仅认识了各种数据,还能熟练地使用运算符对它们进行各种操作。这是从静态的数据认知到动态的程序逻辑的关键一步。

我们已经有了“食材”(数据类型)和“厨具”(运算符),接下来需要什么?没错,是“菜谱”!下一章,我们将进入激动人心的流程控制,学习 if 判断和 for/while 循环。你将学会如何让程序根据不同的情况做出不同的反应,以及如何重复执行任务,真正让你的代码“活”起来!准备好,迎接编程的核心魅力吧!


-- 感谢阅读 --