《Tiny Python Projects》- 22个项目学Python
文件来源: 阿里云盘 /books/python/Tiny_Python_Projects.pdf
基本信息
- 作者: Ken Youens-Clark(亚利桑那大学高级科学程序员,生物信息学背景)
- 出版社: Manning Publications
- 页数: 439 页
- 文件大小: 11.33 MB
- 格式: PDF(文字版)
核心观点
这是一本通过22个小型有趣项目来教授Python编程和测试驱动开发(TDD)的实践指南。每个项目都是短小精悍的命令行工具,涵盖Python的核心概念和实用技能。作者强调”边做边学”,通过实际编码来理解编程思想。
关键概念
1. 测试驱动开发(TDD)
- 先写测试,再写代码
- 使用
pytest框架运行测试 - 测试失败 → 写代码 → 测试通过 → 重构的循环
- 每章都提供
test.py文件,包含自动化测试
2. 命令行参数处理
- 使用
argparse模块处理命令行参数 - 定义位置参数和可选参数(如
-n,--name,-h,--help) - 字符串图示(string diagram)可视化输入输出
3. Python核心数据结构
| 章节 | 主题 | 核心技能 |
|---|---|---|
| 第2章 | 字符串处理 | 字符串操作、切片、格式化、条件分支 |
| 第3章 | 列表操作 | 列表创建、排序、索引、切片、join |
| 第4章 | 字典使用 | 字典创建、查找、编码/解码算法 |
| 第5章 | 文件处理 | 读写文件、STDOUT输出 |
| 第6章 | 文件统计 | 文件读取、迭代、格式化输出 |
| 第8章 | 字符串替换 | str.replace()、str.translate() |
| 第9章 | 随机词生成 | random模块、seed控制、列表操作 |
| 第14章 | 正则表达式 | re模块、押韵词生成 |
| 第19章 | CSV处理 | csv模块、数据解析、文本表格输出 |
| 第20章 | 密码生成 | 文件处理、列表推导、Title Case |
4. 函数式编程技巧
- 列表推导式:
[ord(char) for char in word] - map()函数:
map(lambda char: ord(char), word) - filter()函数:过滤符合条件的元素
- 三个工具的对比和应用场景
5. 井字棋游戏(第21-22章)
- 状态管理:用字符串表示棋盘状态
- 胜负判断逻辑
- 交互式版本:添加类型提示和交互界面
- 算法设计:如何计算最佳移动
重要数据/结论
- 全书22个项目,每个项目对应一个核心概念
- 强调代码质量:格式化(YAPF/Black)、代码检查(Flake8/Pylint/mypy)
- 所有代码来自GitHub仓库:https://github.com/kyclark/tiny_python_projects
- 项目难度递进:从简单的”Hello World”到完整的井字棋游戏
项目列表精选
- hello.py - 说”Hello, World!”
- crowsnest.py - 字符串处理
- picnic.py - 列表操作
- jump.py - 字典编码(Jump the Five算法)
- howler.py - 文件处理和STDOUT输出
- wc.py - 文件统计
- gashlycrumb.py - 字典查找
- apples.py - 字符串替换
- abuse.py - 随机词生成
- telephone.py - 字符串突变
- bottles.py - 函数编写与测试
- ransom.py - 随机大小写
- christmas.py - 算法设计
- rhymer.py - 正则表达式押韵
- friar.py - 更多正则表达式
- scrambler.py - 单词中间重排
- madlibs.py - 正则表达式填空
- gematria.py - ASCII数值编码
- workout.py - CSV解析
- password.py - 密码生成
- tictactoe.py - 状态管理
- tictactoe_redux.py - 交互式版本
可行动点
- 学习TDD实践:在每个项目开始前先运行测试
- 掌握argparse:所有项目都使用命令行参数
- 理解函数式编程:列表推导、map、filter的综合应用
- 正则表达式实战:第14-17章的系统学习
- 代码质量工具链:pytest + Black + Flake8 + mypy
关联知识
SICP - 同样强调计算思维和编程实践 The C++ Programming Language - 参考书籍结构 Effective C++ - 类似的”条目式”学习结构 程序员修炼之道 - 软件测试理念相通
备注
- 这是一本非常实用的Python入门到进阶书籍
- 每个项目都可以独立学习,也可按顺序完成
- 作者背景是生物信息学,项目中包含大量文本处理场景
- GitHub仓库提供所有项目的源代码和测试文件
- 适合有一定编程基础,想系统学习Python的人