适用对象:资深前端开发者,熟悉 JavaScript/TypeScript、工程化、异步、Web API、测试与组件化思维。
计划周期:共 30 天。
每日投入建议:工作日 2.5 小时,周末 4 小时。核心目标是把 Python 用到生产级小项目里,而不是背语法。
当前基准:Python 官网下载页显示当前稳定版为 3.14.6。学习时以 Python 3.14 文档为准。
总目标
30 天后你应该能独立完成这些事:
1.使用 uv 管理 Python 版本、虚拟环境、依赖、脚本和项目。2.熟练写 Pythonic 代码,理解对象模型、迭代器、生成器、上下文管理器、装饰器。3.用类型标注、mypy 或 pyright、ruff、pytest 建立可靠工程流。4.理解 Python 异步模型,能把前端的 Promise、event loop、streaming 经验迁移到 asyncio。5.用 FastAPI、Pydantic、SQLAlchemy 构建一个可测试、可维护的 API 服务。6.能阅读主流 Python 项目源码,知道包结构、入口、配置和测试如何组织。
学习方法
每天按固定节奏执行:
1.读 30 分钟:只读当天资源的必要章节,带着问题读。2.写 90 分钟:必须产出可运行代码。3.测 30 分钟:用 pytest 或命令行验证,不靠手感。4.复盘 20 分钟:记录 3 个点:今天学到的 Python 机制、与 JS/TS 的差异、明天要补的缺口。
不要用“看完教程”作为完成标准。每天的完成标准以代码和测试为准。
推荐资源
优先级从高到低:
1.Python 官方教程:https://docs.python.org/3/tutorial/[1]2.Python 标准库文档:https://docs.python.org/3/library/[2]3.Python 语言参考:https://docs.python.org/3/reference/[3]4.Python Packaging User Guide:https://packaging.python.org/en/latest/[4]5.uv 文档:https://docs.astral.sh/uv/[5]6.Ruff 文档:https://docs.astral.sh/ruff/[6]7.pytest 文档:https://docs.pytest.org/en/stable/[7]8.typing 官方文档:https://typing.python.org/en/latest/[8]9.mypy 文档:https://mypy.readthedocs.io/en/stable/[9]10.FastAPI 文档:https://fastapi.tiangolo.com/[10]11.Pydantic 文档:https://docs.pydantic.dev/latest/[11]12.SQLAlchemy 2.0 文档:https://docs.sqlalchemy.org/en/20/[12]13.HTTPX 文档:https://www.python-httpx.org/[13]14.Real Python,用于查专题解释:https://realpython.com/[14]
建议你建一个本地学习仓库:
python-fast-track/ day01-basics/ day02-data-model/ ... app/ tests/ notes/ pyproject.toml
第 1 周:语法、对象模型、工具链
目标:建立 Python 的基础语义模型。你已经会编程,所以跳过“变量是什么”这种内容,直接对齐 Python 的执行模型、数据结构、模块和工具链。
Day 1,环境和执行模型
学习内容:安装 Python 3.14、安装 uv、理解解释器、虚拟环境、脚本执行、REPL、模块执行方式。
如何学习:先读 Python 官方教程的前两章,再读 uv 的 Getting Started。重点比较 node/npm/pnpm 与 python/uv/pip 的职责边界。
动手任务:创建 python-fast-track 项目;用 uv init 初始化;写一个 main.py,支持从命令行读取参数并输出 JSON。
资源:Python 下载页、Python Tutorial 1-2、uv Getting Started。
完成标准:可以运行 uv run python main.py --name Yves,输出稳定 JSON。
Day 2,基础语法与控制流
学习内容:缩进、表达式、条件、循环、match、异常、函数默认参数。
如何学习:用 TS 对照 Python:if/for/switch/try 分别怎么迁移。重点看 Python 的 truthiness、None、异常链。
动手任务:实现一个命令行 Todo parser,支持 add/list/done/remove 四个命令,数据暂存在内存。
资源:Python Tutorial 3-4、Python argparse 文档。
完成标准:四个命令都有单独函数;错误输入有清晰异常或错误返回。
Day 3,内置数据结构
学习内容:list、tuple、dict、set、切片、推导式、排序、解包。
如何学习:用前端数组和对象经验迁移,但重点补 Python 的可变性、哈希、引用语义。
动手任务:写一个日志统计脚本,输入一组访问日志,输出 endpoint 访问次数、状态码分布、P95 响应时间。
资源:Python Tutorial 5、标准库 collections、statistics。
完成标准:不用全局变量;至少用到 Counter、defaultdict 或 dataclass 中的一个。
Day 4,函数、作用域和闭包
学习内容:参数传递、*args、**kwargs、闭包、lambda、装饰器基础。
如何学习:对比 JS 的 function、arrow function、closure。重点理解 Python 的 late binding 问题。
动手任务:给 Day 3 的日志函数加一个计时装饰器和一个简单缓存装饰器。
资源:Python Tutorial 4.7、Python FAQ 中关于 late binding closures 的说明、Real Python decorators 专题。
完成标准:装饰器保留原函数返回值;能解释 functools.wraps 的作用。
Day 5,模块、包和项目结构
学习内容:import、模块搜索路径、包、__init__.py、脚本入口、相对导入。
如何学习:对比 ESM/CJS。重点理解“模块也是对象”和导入时执行顶层代码。
动手任务:把前 4 天代码整理成一个包:cli/、core/、utils/。增加 pyproject.toml 脚本入口。
资源:Python Tutorial 6、Packaging User Guide。
完成标准:可以通过 uv run todo ... 执行命令,不依赖手动指定 .py 文件路径。
Day 6,类、dataclass 和对象模型
学习内容:class、实例属性、类属性、继承、协议意识、dataclass。
如何学习:用 TS class 对照 Python class。重点理解 Python 的动态属性、dunder method、组合优先。
动手任务:把 Todo item、Log entry、Stats result 建模为 dataclass;实现排序、格式化输出。
资源:Python Tutorial 9、标准库 dataclasses。
完成标准:模型层没有 I/O;命令行层只负责输入输出。
Day 7,第 1 周验收
学习内容:复盘语法和工具链。
如何学习:只做整合,不学新内容。
动手任务:把 Todo CLI 改成文件持久化,数据保存为 JSON。补 5 个最小测试。
资源:标准库 json、pathlib、pytest Getting Started。
完成标准:uv run pytest 通过;删除数据文件后程序能正常初始化。
第 2 周:Pythonic 编程、类型、测试
目标:进入工程可维护区。重点是可读性、类型约束、测试边界和错误处理。
Day 8,迭代器、生成器和惰性计算
学习内容:iterator、iterable、generator、yield、生成器表达式。
如何学习:对比 JS iterator/generator。重点理解 Python 的数据管道写法。
动手任务:把日志统计改造成流式处理,逐行读取大文件,不一次性加载到内存。
资源:Python Tutorial 9.8、标准库 itertools。
完成标准:能处理 100MB 级日志文件;核心逻辑可单元测试。
Day 9,上下文管理器和资源生命周期
学习内容:with、context manager、contextlib、文件和网络资源释放。
如何学习:对比前端里的 cleanup、React effect cleanup、try/finally。
动手任务:写一个计时上下文管理器;封装一个安全读写 JSON 文件的上下文工具。
资源:标准库 contextlib、Python data model 中 context manager 部分。
完成标准:异常发生时资源仍能释放;测试覆盖异常路径。
Day 10,异常设计和错误边界
学习内容:自定义异常、异常链、raise from、错误边界、失败可观测性。
如何学习:对比前端 Error、Promise rejection、Error Boundary。重点区分程序员错误和业务错误。
动手任务:给 Todo CLI 设计异常层级:输入错误、存储错误、数据损坏错误。命令行层统一转换为退出码和错误消息。
资源:Python Tutorial Errors and Exceptions、标准库 logging。
完成标准:核心层抛语义异常;CLI 层负责展示;测试覆盖坏 JSON 文件。
Day 11类型标注基础
学习内容:list[str]、dict[str, int]、Optional、Union、Literal、TypedDict、Protocol。
如何学习:用 TS 思维迁移,但注意 Python 类型是渐进式、运行时默认不校验。
动手任务:给 Todo 和日志项目补全类型标注;引入 mypy 或 pyright。
资源:typing 官方文档、mypy Getting Started。
完成标准:类型检查通过;至少修复 3 个类型工具指出的问题。
Day 12,pytest 和测试结构
学习内容:fixture、parametrize、临时目录、异常断言、测试命名。
如何学习:对比 Jest/Vitest。重点理解 fixture 生命周期和测试隔离。
动手任务:为 Todo CLI 补充测试:正常路径、重复完成、删除不存在项、损坏数据文件、空列表。
资源:pytest 官方文档。
完成标准:至少 12 个测试;测试不依赖真实用户目录。
Day 13,Ruff、格式化和工程约束
学习内容:lint、format、import sorting、规则配置、pre-commit 思路。
如何学习:对比 ESLint、Prettier、lint-staged。重点理解 Python 社区目前偏向 ruff 的一体化工具链。
动手任务:配置 ruff format 和 check;修复所有 lint 问题;在 pyproject.toml 写入规则。
资源:Ruff 文档。
完成标准:uv run ruff check . 和 uv run ruff format --check . 均通过。
Day 14,第 2 周验收
学习内容:整合类型、测试、lint。
如何学习:模拟一次小型 PR 自审。
动手任务:重构 Todo CLI,使核心逻辑、存储层、CLI 层边界清晰。写一份 notes/week2-review.md,说明状态流和错误流。
资源:前 13 天代码和文档。
完成标准:测试、lint、类型检查全部通过;你能解释每个模块的职责。
第 3 周:异步、网络、Web API
目标:把前端异步经验迁移到 Python 服务端,掌握 API、数据校验、并发 I/O 和测试。
Day 15,asyncio 基础
学习内容:coroutine、event loop、task、await、gather、timeout、cancellation。
如何学习:对比 Promise、AbortController、event loop。重点看 cancellation 如何传播。
动手任务:写一个并发 URL checker,输入 URL 列表,并发检测状态码和耗时。
资源:Python asyncio 文档、HTTPX Async 文档。
完成标准:支持超时;支持取消;失败不会导致全部结果丢失。
Day 16,HTTP 客户端和数据边界
学习内容:HTTPX、请求超时、重试策略、响应模型、错误分类。
如何学习:对比 fetch、axios。重点把网络错误、HTTP 错误、业务错误分开。
动手任务:封装一个 GitHub API client,获取用户公开仓库列表并输出语言分布。
资源:HTTPX 文档、GitHub REST API 文档。
完成标准:client 层无打印;调用层决定展示;测试用 mock 或假对象隔离网络。
Day 17,FastAPI 入门
学习内容:路由、请求体、响应模型、依赖注入、OpenAPI。
如何学习:对比 Express、Next.js route handler、NestJS。重点理解类型标注如何生成 OpenAPI。
动手任务:把 Todo 项目迁移为 FastAPI 服务:POST /todos、GET /todos、PATCH /todos/{id}、DELETE /todos/{id}。
资源:FastAPI Tutorial。
完成标准:能打开 /docs 查看 API;四个接口可用。
Day 18,Pydantic 和数据校验
学习内容:BaseModel、字段校验、默认值、序列化、模型边界。
如何学习:对比 Zod、Yup、TypeScript interface。重点理解 Pydantic 是运行时校验,TS 是静态类型。
动手任务:为 Todo API 增加请求模型、响应模型、错误响应模型。禁止把数据库模型直接暴露为 API 模型。
资源:Pydantic 文档、FastAPI Body 和 Response Model 文档。
完成标准:非法输入返回 422;响应字段稳定。
Day 19,API 测试
学习内容:FastAPI TestClient、pytest fixture、依赖替换、测试数据库意识。
如何学习:对比 Playwright API test、supertest。重点测试用户路径而不是测试实现细节。
动手任务:为 Todo API 写完整测试:创建、列表、完成、删除、非法输入、找不到资源。
资源:FastAPI Testing 文档、pytest fixture 文档。
完成标准:至少 10 个 API 测试;每个测试独立运行。
Day 20,依赖注入和应用结构
学习内容:FastAPI dependency、service layer、repository layer、settings。
如何学习:把前端“组件只做展示、hooks 管副作用”的经验迁移成“路由只做协议适配、service 管业务、repository 管存储”。
动手任务:重构 Todo API:api/、schemas/、services/、repositories/、settings.py。
资源:FastAPI Bigger Applications 文档。
完成标准:路由函数不直接读写文件;测试可以替换 repository。
Day 21,第 3 周验收
学习内容:整合异步、API、测试。
如何学习:做一次端到端验收。
动手任务:给 Todo API 增加一个异步 endpoint:批量检查 Todo 中 URL 的可访问性,并保存结果。
资源:asyncio、HTTPX、FastAPI 文档。
完成标准:接口有超时控制;部分 URL 失败时整体请求仍返回可解释结果。
第 4 周:数据库、工程化、生产级项目
目标:完成一个接近真实工作的 Python 后端项目。重点是数据库、配置、日志、迁移、部署和代码阅读能力。
Day 22,SQLAlchemy 2.0 基础
学习内容:engine、session、ORM model、query、transaction。
如何学习:对比 Prisma、TypeORM。重点理解 session 生命周期和事务边界。
动手任务:把 Todo API 从 JSON 文件存储迁移到 SQLite + SQLAlchemy。
资源:SQLAlchemy 2.0 Tutorial。
完成标准:创建、查询、更新、删除都走数据库;测试使用临时 SQLite。
Day 23,数据库迁移和 schema 演化
学习内容:Alembic、migration、schema version、向后兼容。
如何学习:对比 Prisma migration。重点理解迁移文件是代码审查对象。
动手任务:引入 Alembic;增加 priority、due_date 字段;写迁移。
资源:Alembic 文档、SQLAlchemy 文档。
完成标准:空库可初始化;旧库可迁移;字段默认值行为明确。
Day 24,配置、环境变量和日志
学习内容:settings、环境变量、结构化日志、日志级别、错误上下文。
如何学习:对比 Vite env、Next.js env、Node logging。重点避免在业务代码里散落配置读取。
动手任务:用 Pydantic Settings 或等价方案管理配置;增加结构化日志;区分 dev/test/prod 配置。
资源:Pydantic Settings 文档、Python logging 文档。
完成标准:测试环境不会写真实数据库;日志能定位请求和错误。
Day 25,认证与权限基础
学习内容:OAuth2 password flow、JWT 概念、依赖注入鉴权、密码哈希。
如何学习:你已有前端鉴权经验,重点补服务端 token 验证、用户身份注入、权限边界。
动手任务:给 Todo API 增加用户模型;每个用户只能访问自己的 Todo。
资源:FastAPI Security 文档。
完成标准:未登录返回 401;访问他人资源返回 404 或 403,策略写清楚。
Day 26,后台任务和队列意识
学习内容:FastAPI BackgroundTasks、任务边界、幂等性、失败重试意识。
如何学习:对比前端里的 optimistic update、后台同步、server action。重点区分请求内副作用和请求后副作用。
动手任务:Todo 完成后触发后台任务写审计日志;URL 检查结果异步更新。
资源:FastAPI Background Tasks 文档。
完成标准:主请求不等待非关键副作用;任务失败有日志。
Day 27,性能和并发边界
学习内容:I/O bound、CPU bound、async vs thread、连接池、N+1 查询。
如何学习:先画当前调用链,再判断瓶颈。避免凭直觉优化。
动手任务:给 Todo API 增加分页、过滤、排序;检查 SQL 查询数量;为高频接口加基础 benchmark。
资源:SQLAlchemy performance 相关文档、Python timeit 或 pytest benchmark 思路。
完成标准:列表接口不会一次性返回全量数据;分页参数有上限。
Day 28,打包、运行和部署形态
学习内容:pyproject.toml、dependency groups、entry points、Docker 基础、ASGI server。
如何学习:对比 Node 项目的 package.json、Dockerfile、start script。重点明确开发运行和生产运行的差异。
动手任务:写 Dockerfile 和启动命令;用 uvicorn 运行服务;整理 README。
资源:Packaging User Guide、uv 文档、FastAPI Deployment 文档。
完成标准:新机器按 README 可以跑起来;命令少于 5 步。
Day 29,阅读真实项目源码
学习内容:读一个小型开源 Python 项目或 FastAPI 示例项目,关注结构、测试、配置、错误处理。
如何学习:先看入口,再看依赖图,再看测试。避免从随机文件开始。
动手任务:选择一个 FastAPI 示例项目,写 notes/source-reading.md:入口在哪里、请求如何到副作用、测试如何替换依赖。
资源:FastAPI 官方示例、Encode 生态项目、Pydantic 示例。
完成标准:能画出一条完整主路径:请求进入、校验、service、repository、数据库、响应。
Day 30,最终项目验收
学习内容:完整复盘。
如何学习:按真实 PR 标准自检。
动手任务:整理最终项目:Todo API + 用户隔离 + SQLite + 迁移 + 测试 + lint + 类型检查 + README。写一份 notes/final-review.md,说明架构、状态流、错误流和已知限制。
资源:本计划所有资源。
完成标准:
1.uv run pytest 通过。2.uv run ruff check . 通过。3.uv run ruff format --check . 通过。4.类型检查通过,或记录未通过原因和风险。5.README 能让另一个开发者在 10 分钟内启动项目。
每周验收标准
第 1 周结束:你能写出可运行 CLI,理解 Python 文件、模块、包和数据结构。
第 2 周结束:你能写出有测试、有类型、有 lint 约束的 Python 小项目。
第 3 周结束:你能写出 FastAPI 服务,并理解异步 I/O、请求校验、依赖注入和 API 测试。
第 4 周结束:你能写出具备数据库、迁移、配置、日志、认证和部署形态的 Python 后端项目。
前端开发者需要重点纠偏的点
Python 的类型标注不等于 TypeScript。默认情况下,它不在运行时生效,需要类型检查器和运行时校验库配合。
Python 的导入会执行模块顶层代码。把副作用放在顶层会导致测试、CLI、服务启动出现隐性问题。
Python 的可变默认参数是常见坑。函数默认参数在定义时求值,避免写 def fn(items=[])。
Python 的 async cancellation 是真实控制流。写异步代码时要明确 timeout、cancellation 和 partial failure。
Python Web 项目里,路由函数应该薄。业务逻辑进入 service,存储进入 repository,协议模型和数据库模型保持边界。
建议的每日命令
uv run python -m pytestuv run ruff check .uv run ruff format .uv run mypy .
如果你选择 pyright 替代 mypy,保持全项目一致即可。
推荐的最终项目结构
python-fast-track/ app/ api/ routes.py dependencies.py core/ config.py logging.py security.py db/ models.py session.py migrations/ repositories/ todo_repository.py user_repository.py schemas/ todo.py user.py services/ todo_service.py url_check_service.py main.py tests/ test_todos_api.py test_todo_service.py test_url_check_service.py notes/ week2-review.md source-reading.md final-review.md pyproject.toml README.md
30 天后的继续路线
如果你主要做 AI 应用:继续学 pydantic、httpx、流式响应、任务队列、PostgreSQL、Redis、OpenAI SDK。
如果你主要做后端服务:继续学 Django 或 FastAPI 深水区、SQLAlchemy、Alembic、Celery/RQ、OpenTelemetry。
如果你主要做数据处理:继续学 Jupyter、Polars、Pandas、NumPy、DuckDB。
如果你主要做自动化:继续学 Typer、Rich、Playwright for Python、文件处理、定时任务。
优先建议:先把 FastAPI + SQLAlchemy + pytest 这条线打穿。它最贴近你现有前端经验,也最容易形成可迁移的生产能力。
References
[1]: https://docs.python.org/3/tutorial/
[2]:https://docs.python.org/3/library/
[3]:https://docs.python.org/3/reference/
[4]:https://packaging.python.org/en/latest/
[5]:https://docs.astral.sh/uv/
[6]:https://docs.astral.sh/ruff/
[7]:https://docs.pytest.org/en/stable/
[8]:https://typing.python.org/en/latest/
[9]:https://mypy.readthedocs.io/en/stable/
[10]:https://fastapi.tiangolo.com/
[11]:https://docs.pydantic.dev/latest/
[12]:https://docs.sqlalchemy.org/en/20/
[13]:https://www.python-httpx.org/
[14]: https://realpython.com/