开篇 · 课程综述
🎯 本篇目标
- 搞清楚这门课到底教什么、按什么顺序教
- 想明白「编程能解决什么问题」,给自己一个学下去的理由
- 认识 Python 的长处和短处——它不是什么都能干
- 知道作为「第一门语言」和「第二门语言」学 Python,方法有什么不同
一、这门课教什么
整门课分成两大块:基础知识 + 项目实战。
基础知识(第 1–10 章):
| 模块 | 你会学到 |
|---|---|
| 学习编程的方法 | 怎么查权威资料、怎么提问、怎么调试 |
| 常用数据类型 | 数字、字符串、列表、元组、集合、字典 |
| 判断和循环 | if / match / while / for、语句嵌套 |
| 输入输出与文件操作 | input、格式化输出、读写文件、文件编码 |
| 函数、类 | 定义函数、参数、返回值、面向对象、继承 |
| 模块、标准库、第三方库 | 导入、自定义模块、pip 装包 |
| 错误和异常 | 异常的捕获与自定义 |
项目实战(第 11–15 章):
| 方向 | 你会做出什么 |
|---|---|
| 数据分析 | 采集网页数据 → 存储 → 用图表展示 |
| 办公自动化 | 批量读写 Excel / Word,做格式转换 |
| Web 开发 | 用 Django 搭一个自己的博客 |
| 人脸识别 | OpenCV 采集视频、训练模型、识别 |
| 物联网 | ESP32 + MQTT,把室内温度推到手机 |
📌 顺序不是随便排的:基础知识是项目实战的前置。跳过基础直接做项目,会在第 11 章卡住。
二、编程能解决什么问题
作者把「值得用程序解决的事」归成三类:
- 重复性劳动——「脏活」「累活」。每天手动改 500 个 Excel,就该写脚本了。
- 复杂的简单问题——比如「围棋」「斗地主」:规则简单,但人要算很久。
- 把生活中的「事儿」归纳成规则,再交给计算机去交互执行。
落到具体收益上,有三个方面:
| 收益 | 含义 |
|---|---|
| 自动化 | 提升工作效率 |
| 定制化 | 解决特定问题,而不是迁就现成软件 |
| 数字化 | 自动分类、批量处理 |
三、Python 和其他编程语言的区别
Python 的特点:
- 是一种高级编程语言
- 是解释型语言(写完直接跑,不需要先编译)
- 语法和自然语言很像(
if x > 0:读起来就是英文) - 足够流行,应用行业广
- 有丰富的库(标准库 + 第三方库)
Python 不适合的场景(这一条很重要,别被「Python 万能」带偏):
| 不适合 | 原因 |
|---|---|
| 抢购、电商等计算密集型场景 | 纯 Python 计算慢;这类场景要 C/C++/Go |
| 内存等底层硬件操作 | Python 屏蔽了硬件细节,反过来也就做不了精细控制 |
| 网页、小程序等前端开发 | 那是 JavaScript / TypeScript 的地盘 |
| App 开发 | 主流是 Kotlin / Swift,不是 Python |
💡 一句话:Python 是"胶水"和"效率工具"——它擅长把各种轮子粘起来快速解决问题,不擅长榨干硬件性能。
四、该怎么学
课程把学习路径分成两种,对号入座:
如果 Python 是你的第一门语言:
- 编程是门手艺,「我」不是美剧——两倍速看一遍学不会编程,得多敲代码。
- 关注「用更少的代码解决问题」。
- 代码不会永远正确,出问题时记得调试和跟踪。
如果 Python 是你的第二门语言:
- 编程不能一蹴而就,要做好随时重构的准备。
- 关注解释型语言和编译型语言的差异,尤其是内存分配方面的异同。
- 学会提问——这是本课程反复强调的能力。
📖 课程指定的必读材料:《提问的智慧》(How To Ask Questions The Smart Way)。 中文版就在本仓库 [00-intro/How-To-Ask-Questions-The-Smart-Way.md(/guide/how-to-ask-questions)。
本章小结
速查表
| 问题 | 答案 |
|---|---|
| 课程结构? | 基础知识(第 1–10 章)+ 项目实战(第 11–15 章) |
| Python 是什么类型语言? | 高级语言、解释型语言 |
| Python 擅长什么? | 自动化、快速开发、数据分析、脚本胶水 |
| Python 不擅长什么? | 计算密集型、底层硬件、前端、App |
| 该怎么学? | 多写、多思考、做好重写的准备 |
三句话
- 编程语言是工具,目的是提升效率。
- Python 是高级语言,也是解释型语言。
- 学 Python 要多写、多思考、并做好重写的准备。
动手练习(课程课后作业)
- 在 C/C++、Python、Java、Go、JavaScript 中,哪种是编译型、哪种是解释型? 哪种适合开发操作系统?哪些适合开发 Web 后端程序?
- 阅读《提问的智慧》(见上文链接)。