CalcGuide · 技术博客主页 / 一页纸学习计划
🔥极高

Python 编程与自动化:从语法到脚本与自动化工具

分类:编程语言 · 路径:docs/topics/lang-python/README.md

#python#scripting#automation#beginner-friendly

用 8~12 周从零基础学到独立完成命令行工具与数据处理脚本

父主题

顶层主题

子主题(0)

Python 编程与自动化:从语法到脚本与自动化工具

0. 元信息

1. 学习路线

解释器与开发环境
  → 变量、类型、控制流与函数
  → 模块、包与可读代码
  → list/tuple/dict/set 与推导式
  → class、继承与魔术方法
  → pathlib、json/csv、itertools/functools、logging
  → unittest/pytest 与异常边界
  → pyproject.toml、venv、wheel 与发布
  → 命令行批处理/数据处理综合项目

每一步都是下一步的前置;不要同时追逐多个框架,先用标准库把问题做完。

2. 阶段周数分配

阶段8 周方案12 周方案备注
1. 环境与解释器0.5 周1 周解释器、venv、pip、编辑器
2. 语法基础1.5 周2 周类型、控制流、函数、模块、包
3. 数据结构1 周1.5 周容器、切片、推导式与复杂度
4. 面向对象0.75 周1 周class、继承、组合、魔术方法
5. 标准库与脚本1.25 周1.5 周文件、序列化、迭代工具、日志
6. 测试与调试0.75 周1 周unittest/pytest、异常、可观测性
7. 打包与发布0.5 周0.5 周pyproject.toml、wheel、版本
8. 综合项目1.75 周3.5 周从 CLI 原型到文档、测试、发布
合计8 周12 周8 周高密度;12 周留复盘和返工时间

3. 八阶段表

阶段核心知识实践产出可观察学会标准
1. 环境与解释器CPython、PATH、REPL、脚本入口、venv、pip、IDE/编辑器hello.py、可激活的虚拟环境、requirements 记录能解释系统 Python 与项目环境的区别,能在新目录创建并运行 venv;避免把全局 pip 当项目依赖
2. 语法基础int/float/str/bool/None、真值、运算符、if/for/while、函数、作用域、import、模块和包温度转换、文件统计、可导入的多模块小程序能独立写函数并说明参数/返回值;知道可变默认参数、局部变量和异常路径;循环复杂度不靠猜
3. 数据结构list、tuple、dict、set、切片、可变性、推导式、排序与键函数CSV/文本单词统计与去重报告能按查找、顺序、唯一性选择容器;能预测常见操作平均复杂度;大数据不无意中复制多份列表
4. 面向对象class、实例/类属性、方法、继承、组合、__init____repr____iter__、比较与上下文管理可测试的文件任务模型或 Todo 域模型能用组合解决主要问题,只有确实需要多态时才继承;能解释魔术方法由谁调用;不把所有代码塞进 class
5. 标准库与脚本os/sys/pathlibjson/csvitertools/functoolsloggingargparse、编码和资源管理支持目录遍历、JSON/CSV 输入、日志和 dry-run 的 CLI 原型能处理路径、编码、缺失文件、权限错误;知道 pathlib 优先于字符串拼路径,日志优先于散落 print
6. 测试与调试unittest、pytest、断言、fixture、mock 基础、异常测试、调试器核心转换/扫描逻辑的单元测试与边界清单能测试空输入、非法参数、权限/编码失败;测试失败能定位到最小复现,而不是改测试迎合实现
7. 打包与发布pyproject.toml、构建后端、wheel、源码包、版本、入口点、依赖声明可安装的 wheel 与命令行入口能在干净 venv 安装 wheel 并运行;知道依赖、构建产物和源码的区别,不把本机路径写进包
8. 综合项目需求、模块边界、CLI UX、数据安全、测试、文档、发布一个可复现运行的批量文件/数据处理工具第三方按 README 建环境、运行测试和示例都成功;作者能讲清取舍、限制和下一步

4. 第一周任务

开发约定

统一使用 Python 3.12+(教学代码避免依赖小版本特性时可运行于 Python 3.11+)。创建环境并运行:

python3 --version
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python script.py
python -m unittest discover

编辑器可选 VS Code、PyCharm Community 或任意支持语法检查和调试的编辑器;不要把 IDE 的“运行”按钮当成环境配置知识。

任务当天交付
Day 1安装 Python、确认 PATH;在 REPL 与脚本中运行 hello;创建 .venv 并记录激活/退出命令notes/week1.md:版本、命令、一次成功运行输出
Day 2变量、数字、字符串、布尔值、格式化字符串、输入与输出温度/单位转换脚本,处理非数字输入
Day 3ifforwhilerangebreak/continue、真值判断目录后缀统计或单词计数脚本
Day 4函数、参数、返回值、作用域、类型注解与 docstring把 Day 2~3 拆成 3 个可测试函数
Day 5list/dict、切片、推导式;模块导入与 if __name__ == "__main__"多文件数据清洗小程序
Day 6pathlib 读取目录、异常处理、退出码;用编辑器断点调试扫描指定目录并输出候选文件清单
Day 7**步骤 A:**组合扫描、过滤、报告三个函数,读取 1 个正常目录并输出报告;运行 python -m unittest。**步骤 B:**补齐空目录、路径不存在、权限错误、非 UTF-8 文件四类边界/异常用例;记录实际输出可运行 CLI 原型 + 测试记录;高强度检查可再运行 python -m compileall

5. 阶段通用验收

  1. 不看答案独立重写每阶段的核心函数或类;
  2. 用自己的话解释该知识解决什么问题、为什么有效;
  3. 画一张数据流、对象关系或调用流程图;
  4. 测试空输入、最小值、最大值、非法输入和资源失败;
  5. 准备至少 3 组自定义数据并贴出实际输出;
  6. 记录关键操作的时间/空间复杂度,特别是容器查找、排序和文件遍历;
  7. 能修改已有程序(加参数、换输入格式、修 bug),而不是只能照抄;
  8. 依赖安装和测试必须在干净 .venv 中重跑一次。

6. 最终验收

7. 综合项目

首选:命令行批量文件/数据处理工具(必做:输入目录或 CSV/JSON,输出处理结果;支持预览和安全失败)。

备选:CLI 版 Todo(本地 JSON 持久化)/ 爬虫(限于合法公开数据并遵守站点规则)/ 自动化部署脚本(必须 dry-run,禁止把密钥写入仓库)。

首选项目最低要求:

  1. 需求说明:目标用户、输入路径/格式、输出格式、覆盖与跳过规则;
  2. 数据结构选择理由:任务记录、路径集合和统计结果为何使用对应容器;说明复杂度;
  3. 核心算法说明:目录遍历、过滤、转换、写出流程,提供伪代码或 Mermaid 图;
  4. 模块化源码cli、业务逻辑、I/O、配置/日志分离,入口通过 pyproject.toml 声明;
  5. 边界测试:空目录、重复文件、非法扩展名、不存在路径、权限错误、编码异常、dry-run 不写盘;
  6. 打包说明:构建 wheel,在干净 venv 安装并运行;
  7. README:安装、用法、示例输入输出、退出码、目录结构;
  8. 复盘记录:用时、难点、取舍、已知限制和下一步。

项目内建议保留 notes/design.mdnotes/test.mdnotes/retrospective.md,与项目代码一起交付。

8. 推荐开源资料

角色资料链接用法
官方入门Python 官方教程https://docs.python.org/3/tutorial/主线学习语法与模块;PSF License,官方文档
官方查阅Python 标准库https://docs.python.org/3/library/查 API、异常和行为;PSF License
中文入门廖雪峰 Python 教程https://liaoxuefeng.com/books/python/introduction/用于概念补充,先核对当前 Python 版本
工程规范Python Packaging User Guidehttps://packaging.python.org/pyproject.toml、wheel、发布流程;文档 CC BY 4.0
测试pytest 文档https://docs.pytest.org/阶段 6 查阅;MIT License
源码对照Python 标准库 CPythonhttps://github.com/python/cpython先完成练习再挑标准库实现阅读;PSF License
练习Exercism Pythonhttps://exercism.org/tracks/python小题和反馈;平台内容按其仓库/题目许可执行

不要把教程收藏数量当学习进度;每份资料都要绑定一个可运行产出。

9. 学习资料汇聚(v0.3 自包含)

本节内容为本计划生成的整理;外部资料仅作学习入口和查询,不复制第三方教材。

9.1 背景与动机

9.2 概念地图

flowchart LR
    Source[.py 源文件] --> Parser[解析与编译]
    Parser --> Bytecode[字节码]
    Bytecode --> VM[Python 虚拟机]
    VM --> Runtime[对象与运行时]
    Runtime --> Containers[list/dict/set]
    Runtime --> Functions[函数与类]
    Modules[模块/包] --> Source
    Stdlib[标准库] --> Modules
    CLI[argparse/入口点] --> Functions
    Files[pathlib/json/csv] --> Functions
    Tests[unittest/pytest] --> Functions
    Build[pyproject.toml/wheel] --> Modules

关系说明:源文件经解释器解析后执行;对象、函数和容器构成程序核心;模块/包组织代码,标准库提供文件和数据能力;CLI 是用户入口,测试验证行为,构建系统把代码交付给其他环境。

9.3 基础知识讲解

主推(评分 4):Python 官方教程用于主线概念;Python 标准库文档用于逐项查阅。二者均为官方资料,适合以当前 Python 3 文档为准。

备查(评分 3~4):廖雪峰教程适合中文快速入门;Packaging User Guide 解决项目后半段的构建与发布;pytest 文档补充测试工作流。

缺失补足(由本计划生成):遇到一个新自动化需求时,先写“输入—转换—输出—失败行为”四格,再选标准库模块;先做能运行的函数,再加 CLI、日志和打包,避免一开始堆框架。

9.4 经典问题与经典案例

#问题为什么重要最简答案
1为什么脚本在 IDE 能跑、终端不能跑?解释器和 PATH 可能不同python -c "import sys; print(sys.executable)" 核对实际解释器,并激活项目 venv
2listtuplesetdict 怎么选?容器选错会让代码难读或变慢有序序列用 list/tuple;唯一性用 set;键值查询用 dict;不变记录优先 tuple
3is== 有什么区别?身份判断错误会造成隐蔽 bug== 比较值,is 比较是否为同一对象;单例 Noneis None
4可变默认参数为何危险?默认 list 会跨调用保留状态def f(items=None): items = [] if items is None else items
5相对路径为何失效?当前工作目录不一定是脚本目录用明确的 pathlib.Path,必要时从参数或项目根目录解析
6文本编码错误怎么办?文件处理工具最常见失败之一明确编码契约,捕获 UnicodeDecodeError,给出路径和修复提示
7为什么要用日志而不是到处 print?自动化任务需要等级、时间和可收集输出logging 负责诊断,CLI 输出负责用户结果
8为什么要测试异常路径?文件不存在和权限失败才是脚本线上常态assertRaises 或 pytest raises 验证失败类型和消息
9为什么用 pyproject.toml统一项目元数据、构建后端和入口点在一个配置文件声明包信息、依赖和构建需求,再构建 wheel
10“能跑”是否等于“可发布”?本机隐式依赖会让他人无法复现干净 venv 安装 wheel、运行测试和 README 示例才算通过

9.5 学习难点

概念难点

难点为什么会卡突破路径
名字、对象与可变性变量不是装值的盒子,引用关系容易混淆id()、浅拷贝和小列表画引用图;分别练 append 与重新绑定
迭代器与生成器惰性求值看不到全部结果先写 list 版本,再改为 yield,比较内存和执行时机
异常传播不知道在哪一层捕获只在能处理的位置捕获;边界层转为用户可理解的退出码

思维难点

难点为什么会卡突破路径
从手工步骤抽象成脚本容易直接复制一次性命令先写输入、规则、输出和重复条件,再函数化
容器与复杂度选择语法简单掩盖了性能差异为每次查找/插入标注平均复杂度,测小数据验证直觉
先设计失败行为新手只设计 happy path每个函数至少补一个空输入和一个异常输入

工程难点

难点为什么会卡突破路径
环境可复现系统解释器、IDE 和 pip 指向不同位置每次记录 sys.executable,只在 venv 中安装项目依赖
模块导入与包布局从任意目录运行时 import 失败使用包结构和 python -m;不靠修改 sys.path 糊过去
测试与发布衔接测试通过但 wheel 缺文件在干净 venv 安装 wheel 后再跑测试和 CLI 示例

9.6 技术标准与接口

Entity

名称版本/状态发布组织许可证/可访问性
Python Language ReferencePython 3.12+ 文档Python Software FoundationPSF License,公开在线
Python Standard Library与解释器版本同步Python Software FoundationPSF License,公开在线
PEP 517/518/621现行打包规范Python Packaging Authority 社区授权公开,PEP 文档在线
Wheel (PEP 427)二进制分发格式PyPA 社区规范公开

Scope

Structure

Ecosystem

Depth Tiers

层级必须看到什么
L0知道 Python、CPython、pip、venv、wheel 和 PyPI 的角色
L1能读懂常见脚本、模块导入、容器和异常
L2能正确调用标准库、创建 venv、运行测试并构建 wheel
L3能解释导入/环境/编码/异常问题,定位失败并修复
L4能为团队设计包边界、版本策略、兼容性和发布流水线

本计划要求综合项目达到 L3

Source

10. 常见误区

11. 所有知识点分类(统一规则)

  1. 编程语言
  2. 数据结构与算法
  3. 计算机基础
  4. 工程技术
  5. Web 与后端
  6. 前端与客户端
  7. 数据与人工智能
  8. 项目与职业能力

本计划归属:编程语言(Python) 主;脚本自动化、测试与发布作为工程实践辅线。


引用

直接依赖(1)

查看知识图谱 · 热度 🔥极高