《Android 应用开发基础教程》——第二章:Activity 与生命周期详解
目录
第二章:Activity 与生命周期详解
2.1 什么是 Activity?
作用:
2.2 创建一个 Activity
示例代码
Manifest 注册:
2.3 Activity 生命周期(Life Cycle)
生命周期图解:
2.4 生命周期代码示例(带日志)
2.5 生命周期应用场景
2.6 Activity 的跳转
2.7 Activity 与 Back Stack(返回栈)
2.8 小结
习题答案
1. Activity 生命周期的 7 个核心方法
2. 什么情况下会触发 onRestart()?
3. 如何从 A 页面跳转到 B 页面?代码示例
示例代码:
详细步骤:
带参数跳转示例:
4. 页面暂停播放音乐应该写在哪个生命周期函数中?
原因:
示例代码:
注意事项:
第二章:Activity 与生命周期详解
2.1 什么是 Activity?
Activity 是 Android 应用中的一个屏幕(界面)或用户交互窗口。每一个 Activity 通常对应一个应用功能界面,例如登录页、主页面、设置页等。
作用:
-
用于用户界面展示和交互
-
承载布局(UI)
-
响应用户事件(点击、滑动等)
2.2 创建一个 Activity
每个 Activity 都需要:
-
一个 Kotlin/Java 类,继承自
AppCompatActivity
-
一个 XML 布局文件
-
在
AndroidManifest.xml
中进行注册
示例代码
// MainActivity.kt
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}
Manifest 注册:
<activity android:name=".MainActivity" />
2.3 Activity 生命周期(Life Cycle)
Android 会根据用户操作和系统状态,对 Activity 进行不同阶段的管理。
生命周期主要分为 7 个核心方法:
方法名 | 说明 |
---|---|
onCreate() | 第一次创建时调用(初始化) |
onStart() | 页面可见时调用 |
onResume() | 页面进入前台、可交互时调用 |
onPause() | 页面部分被遮挡,失去焦点时调用 |
onStop() | 页面完全不可见 |
onRestart() | 从停止状态重新启动 |
onDestroy() | Activity 被销毁前调用 |
生命周期图解:
(建议记忆该顺序)
onCreate → onStart → onResume↓ ↑onRestart ← onStop ← onPause↓onDestroy
2.4 生命周期代码示例(带日志)
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)Log.d("LifeCycle", "onCreate")}override fun onStart() {super.onStart()Log.d("LifeCycle", "onStart")}override fun onResume() {super.onResume()Log.d("LifeCycle", "onResume")}override fun onPause() {super.onPause()Log.d("LifeCycle", "onPause")}override fun onStop() {super.onStop()Log.d("LifeCycle", "onStop")}override fun onRestart() {super.onRestart()Log.d("LifeCycle", "onRestart")}override fun onDestroy() {super.onDestroy()Log.d("LifeCycle", "onDestroy")}
}
打开 Android Studio 的 Logcat 面板,你可以看到 Activity 的生命周期变化日志。
2.5 生命周期应用场景
方法 | 实际应用场景 |
---|---|
onCreate() | 初始化变量、绑定事件、加载布局 |
onResume() | 开始动画、监听器、摄像头等资源 |
onPause() | 暂停动画、释放资源、防止泄露 |
onStop() | 保存数据状态,如保存草稿 |
onDestroy() | 彻底释放资源,如线程、数据库 |
2.6 Activity 的跳转
跳转页面使用 Intent
:
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
别忘了注册 SecondActivity:
<activity android:name=".SecondActivity" />
2.7 Activity 与 Back Stack(返回栈)
每启动一个新 Activity,系统会将它压入返回栈(Back Stack),按返回键时会依次出栈。
可以使用:
-
finish()
关闭当前 Activity -
Intent.FLAG_ACTIVITY_CLEAR_TOP
控制跳转时清空栈
2.8 小结
-
Activity 是 Android 应用中的基础组成单位
-
生命周期必须熟悉,防止内存泄露或资源浪费
-
跳转、返回等行为均受生命周期控制
-
可以通过
Log.d()
实际跟踪生命周期过程
📌 练习题
-
简述 Activity 生命周期的 7 个核心方法
-
什么情况下会触发
onRestart()
? -
如何从 A 页面跳转到 B 页面?代码示例
-
页面暂停播放音乐应该写在哪个生命周期函数中?
下一章我们将进入实战部分:
✅ 第三章:布局管理与 UI 组件详解(LinearLayout、ConstraintLayout、Button、TextView 等)
PS:兄弟们私信我说,kotlin不习惯,那么从第三章开始,我将采用java代码展示示例代码。咱就是说,主打一个宠粉~~~
习题答案
1. Activity 生命周期的 7 个核心方法
Android 的 Activity
生命周期包含以下 7 个核心回调方法,它们在不同状态下被系统调用:
-
onCreate()
:- 当 Activity 第一次创建时调用。
- 用于初始化操作,例如设置布局、绑定数据等。
-
onStart()
:- 当 Activity 即将变为可见状态时调用。
- 此时用户还不能与 Activity 交互。
-
onResume()
:- 当 Activity 获得焦点并进入前台时调用。
- 用户可以与 Activity 交互。
-
onPause()
:- 当 Activity 失去焦点但仍部分可见时调用(如弹出对话框)。
- 通常用于暂停耗资源的操作(如音乐播放)。
-
onStop()
:- 当 Activity 完全不可见时调用。
- 例如跳转到另一个 Activity 或按下 Home 键。
-
onRestart()
:- 当 Activity 从停止状态重新启动时调用。
- 在
onStart()
之前调用。
-
onDestroy()
:- 当 Activity 被销毁时调用。
- 用于释放资源或清理操作。
2. 什么情况下会触发 onRestart()
?
onRestart()
方法会在以下情况下被触发:
- 当一个处于停止状态(调用了
onStop()
)的 Activity 被重新启动时。 - 典型场景:
- 用户按下 Home 键离开应用后,又通过最近任务列表返回到该 Activity。
- 用户从其他 Activity 返回到当前 Activity。
生命周期流程为:onRestart()
→ onStart()
→ onResume()
。
3. 如何从 A 页面跳转到 B 页面?代码示例
从 A 页面跳转到 B 页面可以使用 Intent
实现。下面是代码示例:
示例代码:
// 在 A 页面中跳转到 B 页面
Intent intent = new Intent(AActivity.this, BActivity.class);
startActivity(intent);
详细步骤:
-
确保 B 页面(
BActivity
)已经在AndroidManifest.xml
中注册:<activity android:name=".BActivity" />
-
在 A 页面中,通过
Intent
指定目标 Activity,并调用startActivity()
方法完成跳转。
带参数跳转示例:
如果我们需要传递数据到 B 页面的话,可以在 Intent
中添加额外信息:
Intent intent = new Intent(AActivity.this, BActivity.class);
intent.putExtra("key", "Hello from A");
startActivity(intent);
在 B 页面中接收数据:
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_b);Intent intent = getIntent();String message = intent.getStringExtra("key");// 使用接收到的数据
}
4. 页面暂停播放音乐应该写在哪个生命周期函数中?
当页面暂停时(例如用户切换到其他页面或按下 Home 键),应该暂停播放音乐。这个操作就应该写在 onPause()
方法中。
原因:
onPause()
是在 Activity 失去焦点时调用的,此时用户可能无法与当前页面交互。- 这是最适合暂停耗资源操作(如音乐播放)的地方。
示例代码:
@Override
protected void onPause() {super.onPause();// 暂停音乐播放if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.pause();}
}@Override
protected void onResume() {super.onResume();// 恢复音乐播放if (mediaPlayer != null && !mediaPlayer.isPlaying()) {mediaPlayer.start();}
}
注意事项:
- 如果音乐是全局播放(如后台播放),需要考虑使用
Service
来管理播放逻辑。 - 在
onDestroy()
中记得释放资源,避免内存泄漏:@Override protected void onDestroy() {super.onDestroy();if (mediaPlayer != null) {mediaPlayer.release();mediaPlayer = null;} }
相关文章:
《Android 应用开发基础教程》——第二章:Activity 与生命周期详解
目录 第二章:Activity 与生命周期详解 2.1 什么是 Activity? 作用: 2.2 创建一个 Activity 示例代码 Manifest 注册: 2.3 Activity 生命周期(Life Cycle) 生命周期图解: 2.4 生命周期代…...
[Java]反射、String类补充
目录 1、反射定义 2、用途(了解) 3、反射相关的类 4、Class类(反射机制的起源) 4.1、相关方法 5、反射示例 5.1、获取Class对象 5.2、反射的使用 6、反射优点和缺点 7、String类补充 7.1、创建对象的思考 8、字符串常量池 9、再谈String对象创建 10、intern方法 …...
word表格批量操作——宏
word中所有表格代码 这个是表格的模板代码 Sub 表格通用代码() For i ActiveDocument.Tables.Count To 1 Step -1ActiveDocument.Tables (i) Next End Sub1、根据内容自动调整表格 Sub 表格适用内容() For i ActiveDocument.Tables.Count To 1 Step -1ActiveDocument.Tabl…...
eSTK.me
eSTK.me 调用 USIM 卡的 Applet 实现在 iOS 内自助切换 Profile。写卡仍然需要借助硬件读卡器或者兼容 eSIM 的 Android 手机。支持国行 iPhone。 eSTK.me(固件 v2.x 及以后的版本)基于 ETSI 的 Bearer Independent Protocol (BIP) 协议,使…...
四级英语备考指南
一、引言 大学英语四级考试是对大学生英语综合能力的一次重要检验。无论是为了学业要求,还是提升自身竞争力,顺利通过四级考试都有着重要意义。本文将为大家详细介绍四级英语的备考策略,帮助大家高效备考,取得理想成绩。 二、了…...
Java Web 之 互联网协议 100问
HTTP是什么? HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输数据。它是 Web 通信的基础,支持浏览器访…...
【单倍型理解及计算系列之二】单倍型基本概念以及其与遗传定位中Bin的定义区别
问题:如何理解单倍型,与遗传定位中Bin的定义区别: 简而言之:就是单倍型是基于LD,通常为连锁不平衡(LD)较高的区域形成。但bin是人为划分的,如以固定SNP数量/固定长度设置࿰…...
ArcPy Mapping 模块基础
在地理信息系统(GIS)的应用中,地图制作是一个非常重要的环节。无论是生成用于展示的静态地图,还是动态更新的地图服务,都需要高效且灵活的工具来实现。ArcPy 提供了强大的mapping模块,可以帮助用户自动化地…...
AcWing 11:背包问题求方案数 ← 0-1背包
【题目来源】 https://www.acwing.com/problem/content/11/ 【题目描述】 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总…...
Redis增删改查
### 进入redis控制台 redis-cli --raw #加上raw,防止中文乱码### 增 127.0.0.1:6379> LPUSH list0 "hello" #增加一个list 1 127.0.0.1:6379> LRANGE list0 0 -1 #查看list hello### 删 127.0.0.1:6379> DEL list0 #删除list 1 127.0.0.1:6379> LRANG…...
多道程序和多任务操作系统区别
多道程序 vs. 多道任务:对比分析 ✅ 共同点 方面共同特征核心机制都依赖于进程/任务切换执行需求实现多个程序或任务"并发"执行系统支持都需要操作系统的支持(如调度算法、内存管理)本质目标提高资源利用率(CPU不空转…...
【MySQL】MySQL建立索引不知道注意什么?
基本原则: 1.选择性原则: 选择高选择性的列建立索引(该列有大量不同的值) 2.适度原则:不是越多越好,每个索引都会增加写入开销 列选择注意事项: 1.常用查询条件列:WHERE字句中频繁使用的列 2.连接操作列…...
区块链木材业务服务平台:商贸物流新变革
区块链木材业务服务平台:商贸物流新变革 在全球商贸物流行业不断发展的当下,木材贸易作为其中重要的一环,面临着诸多挑战。区块链木材业务服务平台的出现,为木材商贸物流领域带来了全新的解决方案,正逐步引领行业走向…...
【AI提示词】经济学家
提示说明 经济学家致力于提供深入的经济分析和预测,帮助用户理解经济趋势、政策影响以及市场动态。他们通过专业的经济模型和数据分析,为用户在投资、决策等方面提供指导。 提示词 # 角色 经济学家## 注意 1. 经济学家专家需要具备深入分析经济现象的…...
C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)
文章目录 一、 描述二、 样例二、 结果输出 一、 描述 这个宏定义(可放入.h头文件里)使用基本的数学运算,几乎兼容所有版本的VS,以下可对正数做四舍五入: #define ROUND_TO_TWO(x) ( (floor((x) * 100 0.5) / 100) …...
kimi+deepseek制作PPT
文章目录 KIMI简介一、基本信息二、核心特点三、服务理念 Deepseek简介PPT关键词提示 KIMI简介 KIMI官网:Kimi - 会推理解析,能深度思考的AI助手 一、基本信息 名称 :KIMI开发团队 :月之暗面科技有限公司上线时间 :…...
Linux-进度条小程序
1. 回车和换行的差异 在输出文本时,回车和换行符的作用是非常不同的。了解它们的行为有助于我们控制输出的方式。 回车(\r):回车符将光标移到当前行的开头,但并不会自动换行。它的作用是覆盖当前行的内容。 换行&…...
Day2—3:前端项目uniapp壁纸实战
接下来我们做一个专题精选 <view class"theme"><common-title><template #name>专题精选</template><template #custom><navigator url"" class"more">More</navigator></template></common…...
什么是超类实体和派生属性
在数据库设计(尤其是实体-关系模型(ER模型))和面向对象建模中,超类实体和派生属性是两个重要的概念,分别用于描述实体间的继承关系和属性的动态计算特性。以下是它们的详细解释和对比: 一、超类…...
性能比拼: Elixir vs Go(第二轮)
本内容是对知名性能评测博主 Anton Putra Elixir vs Go (Golang) Performance Benchmark (Round 2) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 这是第二轮关于 Elixir 和 Go 的对比测试。我收到了一份来自 Elixir 创作者的 Pull Request ,并且我认为…...
微信、抖音、小红书emoji符号大全
1、Emoji 日常符号 👣👀👁️👄💋👂🦻👃👅🧠🫀🫁🦷🦴💪🦾🦿🦵&a…...
【大模型】 LangChain框架 -LangChain实现问答系统
LangChain 介绍与使用方法 1. 什么是 LangChain?2. LangChain 的主要功能3. 如何使用 LangChain?3.1 环境准备3.2 基本使用示例3.2.1 简单的问答系统3.2.2 结合外部工具 3.3 高级用法 4. 常见问题及解决方法4.1 安装问题4.2 运行问题4.3 性能问题 5. 实战…...
k8s安装kubeadm
使用kubeadm安装部署k8s集群 目前生产部署Kubernetes 集群主要有两种方式: kubeadm Kubeadm 是一个K8s 部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernetes 集群。 官方地址:https://kubernetes.io/docs/refer…...
五、小白如何用Pygame制作一款跑酷类游戏(主角跳跃和滑行动作的实现)
五、小白如何用Pygame制作一款跑酷类游戏(主角跳跃和滑行动作的实现) 文章目录 五、小白如何用Pygame制作一款跑酷类游戏(主角跳跃和滑行动作的实现)前言一、添加主角的跳跃和滑行图片素材二、代码部分1.在走路状态时按下按键发生…...
LLM MCP模型上下文协议快速入门(for Java)
什么是MCP Model Control Protocol(MCP)是由AI研究机构Anthropic在2023年第二季度首次提出的新型协议规范,旨在解决大语言模型LLM应用中的上下文管理难题。作为LLM交互领域的创新标准,MCP协议在发布后短短一年内已进行了多次更新…...
CTF--秋名山车神
一、原网页: 二、步骤: 1.尝试用计算器计算: 计算器溢出,无法正常计算 2.使用python计算: 得出计算结果为:1864710043732437134701060769 3.多次刷新页面: 发现变量为value,要用pos…...
Windows桌面图标变白的解决方案
一、问题原因 桌面图标变白通常是由于系统图标缓存文件(IconCache.db)损坏或系统图表示现异常导致。图标缓存是Windows用于存储应用程序和文件夹图标图像的临时文件,当该文件损坏或系统未正确更新缓存时,图标会因无法加载原始图像…...
Linux学习——信号量
1.头文件-semaphore.h 2.信号量类型 sem_t sem; 加强版的互斥锁,是并行的 3.主要函数 初始化信号量 sem_init(sem_t *sem,int pshared,unsigned int value); 第一个参数 信号量类型 第二个参数 0-线程同步 1-进程同步 …...
蓝桥杯 蜗牛 动态规划
16.蜗牛 - 蓝桥云课https://www.lanqiao.cn/problems/4985/learning/?page1&first_category_id1&second_category_id3&sortdifficulty&asc1&tags%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92,%E9%80%92%E6%8E%A8,01%E8%83%8C%E5%8C%85,%E5%8C%BA%E9%97%B4DP,%E6…...
FiftyOne 管理数据
FiftyOne 管理数据 下载安装FiftyOne https://docs.voxel51.com/ 下载 coco-2017 使用 FiftyOne 查看 import fiftyone as fo import fiftyone.zoo as foz# 自定义路径 - 修改这些变量以匹配你的环境 image_path /media/wmx/ws3/AI/data/coco2017/train2017 annotations_…...
解决echarts饼图label显示不全的问题
解决办法 添加如下配置: labelLayout: {hideOverlap: false},...
2000-2017年各省城市天然气供气总量数据
2000-2017年各省城市天然气供气总量数据 1、时间:2000-2017年 2、来源:国家统计局、能源年鉴 3、指标:行政区划代码、城市、年份、城市天然气供气总量 4、范围:31省 5、指标说明:城市天然气供气总量是指在一定时间…...
Linux教程-常用命令系列二
文章目录 1. 系统管理常用命令1. useradd - 创建用户账户功能基本用法常用选项示例 2. passwd - 管理用户密码功能基本用法常用选项示例 3. kill - 终止进程功能基本用法常用信号示例 4. date - 显示和设置系统时间功能基本用法常用选项时间格式示例 5. bc - 高精度计算器功能基…...
苍穹外卖(菜品管理)
菜品管理 公共字段自动填充 实现思路 代码开发 自定义注解 AutoFill 自定义切面 AutoFillAspect 完善自定义切面 AutoFillAspect 的 autoFill 方法 在Mapper接口的方法上加入 AutoFill 注解 将业务层为公共字段赋值的代码注释掉 功能测试 新增菜品 需求分析和…...
Cril 截取字段-生成hostname
有些event 是不规则,需要用regular express 来加工一下, 下面说一下sample 数据: 2021-10-26 17:00:12 PDT sample log data from host eagle1 2021-10-26 17:00:12 PDT sample log data from host eagle2 2021-10-26 17:00:12 PDT sample log data from host eagle3 2021…...
免费将AI生成图像放大4倍的方法
有些人不需要任何高级工具和花哨的技巧;他们只需要一种简单的方法来提升图像分辨率而不损失任何质量 — 今天,我们将学习如何做到这一点。 生成AI图像最大的问题之一是什么?最终结果通常分辨率非常低。 这会导致很多不同的问题,特别是对于那些想要在内容或项目中使用这些…...
Map和Set相关练习
目录 1、只出现一次的数字 2、宝石与石头 3、坏键盘打字 4、复制带随机指针的链表 5、大量数据去重 6、大量数据重复次数 7、前K个高频单词 1、只出现一次的数字 oj:136. 只出现一次的数字 - 力扣(LeetCode) 思路: 1. 使用…...
移动自动化测试-appium
app自动化介绍 工具说明 主流工具 app自动化执行原理 app类型(技术) 环境搭建 所需环境 JDKandroid-sdkappium模拟器 1、JDK安装 说明:为什么要安装JDK? 安卓应用或开发工具是使用JAVA语言开发,必须使用jdk。…...
一个项目中多个Composer的使用方法
composer是依赖管理工具。 有时我们会在一个项目中使用到多个composer,且每个版本不同。 前提:例如项目xyz根目录vendor中存在阿里云的对应代码。我现在需要再composer腾讯云短信发送的SDK。 1、随便找个位置新建文件夹,存储腾讯云短信发送…...
Qt项目实现对西门子PLC的读写操作(snap7)——C++
实际项目中需要用到对西门子PLC进行通讯,故进行记录,方便后续回顾复习 实现功能: ①PLC连接与断开 ②往PLC指定位置读写操作(bit、real、string) PLC中的real相当于C中的float,4字节,32bit 1&…...
Python字典深度解析:高效键值对数据管理指南
一、字典核心概念解析 1. 字典定义与特征 字典(Dictionary)是Python中基于哈希表实现的无序可变容器,通过键值对存储数据,具有以下核心特性: 键值对结构:{key: value}形式存储数据快…...
Java虚拟机面试题:垃圾收集(下)
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
9 C 语言变量详解:声明与定于、初始化与赋值、printf 输出与 scanf 输入、关键字、标识符命名规范
1 初识变量 1.1 变量的意义 在程序设计中,变量是程序中不可或缺的组成单位,最基本的存储单元。它如同现实生活中的容器,用于临时或长期保存各种类型的数据,为程序提供灵活的数据操作能力。 以选购手机为例,手机的各项…...
释放 Mac 存储空间:Ollama 模型迁移到外接 NVMe 磁盘
目录 背景一、准备工作1. 确认外接 NVMe 已挂载2. 创建模型目录 二、迁移已有模型数据(可选)三、配置模型目录1. 设置环境变量2. 使用软链接(强烈推荐) 四、测试是否成功 背景 在本地运行 Ollama 时,模型数据默认保存…...
spring-batch批处理框架(1)
学习链接 SpringBatch高效批处理框架详解及实战演练 spring-batch批处理框架(1) spring-batch批处理框架(2) spring batch官方文档 spring batch官方示例代码 - github 文章目录 学习链接一、课程目标课程目标课程内容前置知识适合人群 二、Spring Batch简介2.1 何为批处理…...
MCP系列:权限管理与隐私保护
前言 随着模型上下文协议(MCP)的广泛应用,安全性问题也逐步突显。在前几篇文章中,我们已经探讨了MCP的基本概念、技术架构、实践应用以及工具调用机制。本篇文章将聚焦于MCP的安全性考量,包括权限管理、隐私保护以及风险缓解策略。 对于企业和开发者而言,了解如何保障M…...
【25软考网工笔记】第二章(7)多路复用技术
目录 一、多路复用技术 1. 频分复用FDM 1)频分复用的基本概念 2)频分复用与相关技术 3)注意事项与扩展 2. 时分复用 1)同步时分复用 2)统计时分复用 3)同步时分复用与统计时分复用的对比 4&#…...
任意文字+即梦3.0的海报设计Prompt
即梦3.0版本发布后,对文字的呈现能力得到了极大的提升,网上也出现了各种文章教大家怎么写提示词。 但是你有没有发现一个问题,好的提示词是需要艺术细胞的,只有那些浸淫设计领域的专家总结的提示词才算上乘。 就像是给你一个主题…...
自动化测试相关协议深度剖析及A2A、MCP协议自动化测试应用展望
一、不同协议底层逻辑关联分析 1. OPENAPI协议 OPENAPI 协议核心在于定义 API 的规范结构,它使用 YAML 或 JSON 格式来描述 API 的端点、请求参数、响应格式等信息。其底层逻辑是构建一个清晰、标准化的 API 描述文档,方便不同的客户端和服务端进行对接…...
零基础上手Python数据分析 (18):Matplotlib 基础绘图 - 让数据“开口说话”
写在前面 —— 告别枯燥数字,拥抱可视化力量,掌握 Matplotlib 绘图基础 欢迎来到 “高效数据分析实战指南:Python零基础入门” 专栏! 经过前面 Pandas 模块的学习和实战演练,我们已经掌握了使用 Python 和 Pandas 进行数据处理、清洗、整合、分析的核心技能。 我们能够从…...