Files
PythonLearn/README.md

251 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Python 零基础到 Web 后端开发教程
## 项目作用
这是一个面向编程新手的 Python 教学项目。项目将从最基础的语法开始,通过讲解、示例、练习和阶段项目,逐步带领学习者掌握 Python 编程、面向对象、数据库开发、FastAPI、Django以及后端项目常用的工程化知识。
本项目不是只供阅读的代码示例集合,而是一套可以逐课学习、亲手练习、逐步完成项目的课程。每个知识点都会说明它是什么、为什么需要它、如何使用它,以及使用时容易出现哪些错误。
## 适合人群
- 从未学习过编程的零基础学习者;
- 学过少量 Python但基础不够系统的学习者
- 希望从 Python 基础过渡到 Web 后端开发的学习者;
- 希望学习 Django 或 FastAPI但不知道如何开始的学习者。
## 最终学习目标
完成全部课程后,你将能够:
1. 阅读和编写常见的 Python 程序;
2. 使用函数、模块、包和异常处理组织代码;
3. 使用面向对象思想设计类和业务模型;
4. 编写 SQL并通过 Python 安全地操作数据库;
5. 理解 HTTP、JSON 和 RESTful API 的基本原理;
6. 使用 FastAPI 开发后端接口;
7. 使用 Django 开发完整的 Web 管理系统;
8. 为项目添加测试、日志、配置管理和基础部署能力;
9. 独立完成一个包含数据库、接口和用户认证的后端项目。
## 学习路线
### 第一阶段Python 基础语法
- 安装 Python 和开发工具;
- 运行第一个 Python 程序;
- 变量与基本数据类型;
- 输入、输出和类型转换;
- 运算符;
- 条件判断;
- `for` 循环与 `while` 循环;
- 字符串;
- 列表、元组、字典和集合;
- 函数;
- 基础综合项目:命令行记账或通讯录程序。
### 第二阶段Python 进阶
- 模块与包;
- 文件和目录操作;
- 异常处理;
- 列表推导式等常用简化写法;
- 迭代器与生成器;
- 装饰器;
- 类型注解;
- 虚拟环境与依赖管理;
- 进阶综合项目:多文件任务管理程序。
### 第三阶段:面向对象编程
- 类与对象;
- 属性和方法;
- 构造方法;
- 实例属性与类属性;
- 封装;
- 继承;
- 多态;
- 常用特殊方法;
- 面向对象综合项目:图书管理系统。
### 第四阶段:数据库编程
本阶段采用精简路线。学习者已经具备数据库、SQL 和 Java 数据库开发基础,因此不再单独讲解关系型数据库、增删改查、关联查询、索引和事务等通用知识,而是重点学习 Python 数据库编程方式以及它与 JDBC、MyBatis、MyBatis-Plus、JPA/Hibernate 的差异。
本阶段统一使用 PostgreSQL不同时维护 MySQL 和 PostgreSQL 两套示例。涉及常见数据库差异时,通过补充说明对照 PostgreSQL 与 MySQL不影响后续将知识迁移到 MySQL。
本阶段共五课:
1. `4_1_PostgreSQL与Psycopg入门`:连接远程 PostgreSQL认识 Python 数据库 APIDatabase APIDB-API使用 Psycopg 3 执行参数化 SQL并与 JDBC 的连接、语句和结果集进行对照;
2. `4_2_Python数据库事务与数据访问层`学习提交、回滚、异常处理、批量操作以及数据访问对象Data Access ObjectDAO和 Repository 分层;
3. `4_3_SQLAlchemy基础`:学习 SQLAlchemy 2.x 的 Engine、Session、声明式模型和基本增删改查并与 JPA/Hibernate、MyBatis-Plus 进行对照;
4. `4_4_SQLAlchemy关系映射与工程实践`学习一对多、多对多、级联操作、加载策略、N+1 查询问题和业务分层;
5. `4_5_数据库综合项目`:使用 PostgreSQL 和 SQLAlchemy 2.x把第三阶段的内存版图书管理系统升级为持久化版本。
本阶段采用两层数据库操作路线:
- Psycopg 3 对应 JDBC 驱动层,用于理解连接、游标、参数化 SQL、查询结果和事务
- SQLAlchemy 2.x 提供 SQL 工具和对象关系映射Object Relational MappingORM能力其中 ORM 的定位更接近 JPA/Hibernate并具备部分与 MyBatis-Plus 相似的常规增删改查体验。
数据库连接地址、用户名和密码通过本地 `config.toml` 提供,不写入环境变量。仓库只提交脱敏的 `config.example.toml`,真实配置文件必须由 `.gitignore` 排除。课程只使用专用练习数据库和受限账号,不连接生产数据库。
### 第五阶段Web 开发基础
- 浏览器、客户端和服务器;
- HTTP 请求与响应;
- URL、请求方法和状态码
- JSON 数据格式;
- RESTful API 设计;
- 使用接口调试工具发送请求;
- 前端与后端的基本交互过程。
### 第六阶段FastAPI
- 创建 FastAPI 项目;
- 路由和请求方法;
- 路径参数、查询参数和请求体;
- 使用 Pydantic 校验数据;
- 统一响应和异常处理;
- 依赖注入;
- 集成 SQLAlchemy
- 数据库迁移;
- 用户注册、登录和身份认证;
- 自动生成的接口文档;
- FastAPI 综合项目:任务管理 API。
### 第七阶段Django
- 创建 Django 项目和应用;
- Django 的项目结构;
- URL、视图和模板
- Model 与 ORM
- 数据库迁移;
- 表单和数据校验;
- Admin 管理后台;
- 静态文件和媒体文件;
- 用户、权限和身份认证;
- Django REST Framework
- Django 综合项目:内容或业务管理系统。
### 第八阶段:工程化与部署
- Git 基础和版本管理;
- 单元测试与接口测试;
- 日志记录;
- 环境变量和多环境配置;
- 代码格式与质量检查;
- Docker 基础;
- Web 服务部署入门;
- 最终项目整理与复盘。
## 建议的学习方式
1. 按目录编号依次学习,不要跳过基础章节。
2. 阅读讲解后,亲手输入示例代码,不要只复制粘贴。
3. 先独立完成练习,再查看提示或参考答案。
4. 遇到错误时,先阅读错误信息,并记录自己尝试过的解决办法。
5. 每学习一小节就运行代码,避免积累大量问题后再统一调试。
6. 每完成一个阶段,都要完成阶段测试和综合项目。
## 每课的基本结构
```text
本课目标
前置知识
概念讲解
完整示例
运行方法与预期结果
关键代码解析
常见错误
课堂练习
练习提示与参考答案
本课小结
验收标准
```
## 目录命名规范
课程采用“阶段目录 → 课程目录”的两级结构,并统一遵守以下规则:
- 阶段目录使用 `两位阶段编号_阶段名称`,例如 `01_python基础`
- 课程目录使用 `阶段号_课程序号_课程主题`,例如 `1_1_hello_world`
- 目录名统一使用下划线 `_` 连接,不使用空格或连字符。
- 课程主题优先使用中文,例如 `1_2_变量与数据类型`
- Python、Web、HTTP、JSON、SQL、FastAPI、Django、Git、Docker、`hello_world` 等通用技术名或教学惯例保留规范英文名称。
- 普通英文目录名统一使用小写,避免出现不同大小写或多套命名方式。
## 计划中的项目目录
```text
Python/
├── README.md
├── AGENTS.md
├── 01_python基础/
│ ├── 1_1_hello_world/
│ ├── 1_2_变量与数据类型/
│ └── 1_3_输入与输出/
├── 02_python进阶/
│ ├── 2_1_模块与包/
│ ├── 2_2_文件与目录操作/
│ ├── 2_3_异常处理/
│ ├── 2_4_推导式与简化写法/
│ ├── 2_5_迭代器与生成器/
│ ├── 2_6_装饰器/
│ ├── 2_7_类型注解/
│ ├── 2_8_虚拟环境与依赖管理/
│ └── 2_9_python进阶综合项目/
├── 03_面向对象/
│ ├── 3_1_Python与Java的类和对象/
│ ├── 3_2_Python与Java的封装差异/
│ ├── 3_3_Python与Java的继承和多态差异/
│ ├── 3_4_Python特殊方法与数据类/
│ └── 3_5_面向对象综合项目/
├── 04_数据库/
│ ├── 4_1_PostgreSQL与Psycopg入门/
│ ├── 4_2_Python数据库事务与数据访问层/
│ ├── 4_3_SQLAlchemy基础/
│ ├── 4_4_SQLAlchemy关系映射与工程实践/
│ └── 4_5_数据库综合项目/
├── 05_web基础/
├── 06_fastapi/
├── 07_django/
└── 08_工程化与部署/
```
这只是目录规划示意,不会提前创建全部目录。正式开始某一课时,才会创建对应的阶段目录、课程目录、中文讲义、示例代码和练习;完成当前课程并确认继续后,再创建下一课。
## 当前学习进度
- 当前阶段:第四阶段——数据库编程。
- 当前课程:`4_2_Python数据库事务与数据访问层`
- 当前状态:第四阶段前两课已完成,并通过 PostgreSQL 连接、成功提交和异常回滚验证。
- 已完成课程:第一阶段 `1_1_hello_world``1_14_python基础综合项目`、第二阶段 `2_1_模块与包``2_9_python进阶综合项目`、第三阶段 `3_1``3_5`,以及第四阶段 `4_1``4_2`
- 学习中的课程:无。
- 已创建课程目录:第一阶段全部课程、第二阶段全部课程、第三阶段 `3_1``3_5`,以及第四阶段 `4_1``4_2`
- 下一步:进入 `4_3_SQLAlchemy基础`,学习 Engine、Session、声明式模型和 ORM 增删改查。
## 建议环境
- 操作系统Windows 10 或 Windows 11
- Python学习开始时选择当前稳定版本
- 编辑器PyCharm 或 Visual Studio Code
- 命令行PowerShell
- 数据库:第四阶段统一使用专用的远程 PostgreSQL 练习数据库;
- Python 数据库驱动Psycopg 3
- 对象关系映射工具SQLAlchemy 2.x
- 浏览器Chrome、Edge 或其他现代浏览器。
具体版本和安装步骤将在第一课中核对并讲解,避免因为版本变化使用过时的安装方式。
## 下一步
第三阶段已完成,已经掌握:
1. 使用 dataclass 建模图书和会员;
2. 使用普通业务类协调借书与还书;
3. 通过组合管理对象关系;
4. 使用自定义异常表达业务失败;
5. 使用鸭子类型接入通知器;
6. 验证正常流程和主要异常流程。
第四阶段前两课已经完成,能够使用本地 TOML 配置、Psycopg 3 和参数化 SQL 安全访问远程 PostgreSQL并通过转账场景掌握事务提交、异常回滚、批量操作以及 Repository/Service 分层。下一步进入 SQLAlchemy 2.x 基础。