# python-learning **Repository Path**: PhiloKun/python-learning ## Basic Information - **Project Name**: python-learning - **Description**: Python 完整知识体系:22 章详细中文笔记 + 96 个零依赖可运行示例,含三层自动校验脚本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python 完整知识体系 > 当前版本:v1.0.0(见 `version.txt`) > 从零到工程化的系统性 Python 学习仓库。 > **每一章 = 一份详细中文笔记(`README.md`)+ 若干可直接运行的示例代码(`.py`)。** > 全仓库**零第三方依赖**——只用标准库,`git clone` 下来就能跑,不需要 `pip install` 任何东西。 --- ## 本机环境 | 项目 | 值 | |---|---| | 解释器 | CPython **3.13.12**(`sysconfig` 报告 `Py_GIL_DISABLED=0`,即启用 GIL 的常规构建) | | 平台 | macOS (darwin) / arm64 | | 第三方依赖 | **无**。所有示例只 import 标准库 | | 校验脚本 | 仓库自带 `verify.py`(纯标准库,零依赖) | | 版本兼容 | 示例面向 3.11+,新语法均标注引入版本;见第 21 章 | --- ## 快速开始 ```bash # 1. 看一眼某章笔记 cat 05-字典与集合/README.md # 2. 跑单个示例 python3 05-字典与集合/dict_internals.py # 3. 全仓库自检(语法 + 逐个运行 + 笔记体量 + 仓库整洁) python3 verify.py # 4. 只检查某些章 python3 verify.py 05 06 python3 verify.py --syntax # 只做语法检查(最快) python3 verify.py --notes # 只查笔记体量与示例数量 python3 verify.py --quiet # 只打印失败项 ``` `verify.py` 的三层校验,也是本仓库的质量约定: 1. **语法检查** —— 所有 `.py` 必须通过 `compile` 2. **运行检查** —— 所有示例必须 40 秒内退出、退出码为 `0`、输出中无未捕获回溯 3. **内容检查** —— 每章 `README.md` ≥ 10KB、每章 ≥ 3 个示例;并扫描是否往仓库里写了运行期垃圾文件 当前状态:**22 章 / 96 个示例脚本 / 全部通过**。 --- ## 学习路线 ``` 阶段一:语言基础(打地基,必须手写) 01 环境搭建与解释器模型 → 02 基础语法与数据类型 → 03 流程控制与函数 04 列表元组与序列 → 05 字典与集合 → 06 字符串与文本处理 阶段二:语言进阶(Python 的精髓所在) 07 函数进阶与装饰器 ★ → 08 迭代器与生成器 ★ → 09 面向对象编程 10 异常处理与上下文管理器 → 11 模块包与导入机制 → 12 文件与IO 13 数据类与类型系统 阶段三:工程能力(能交付才算学会) 14 标准库精讲 → 15 并发编程线程进程与GIL ★ 16 异步编程asyncio ★ → 17 元编程与反射 18 内存管理与性能 → 19 测试调试与工程化 阶段四:收口 20 综合实战项目 ★★ → 21 附录A 版本演进与新特性速查 22 附录B 陷阱清单与工程规范 ★★ ``` ★ 标记为难点章,★★ 为综合章。**顺序读即可,每章都是自包含的**——急着用哪块就跳哪章。 --- ## 章节总览 | 章 | 主题 | 笔记 | 示例 | 核心内容 | |---|---|---|---|---| | 01 | 环境搭建与解释器模型 | 17.0KB | 4 | 字节码、`dis`、`__pycache__`、`venv`、`sys.path`、打包 | | 02 | 基础语法与数据类型 | 13.7KB | 4 | 名字绑定、数字类型、真值测试、可变性、注解入门 | | 03 | 流程控制与函数 | 13.0KB | 4 | 参数五种形态、可变默认参数陷阱、LEGB、闭包 | | 04 | 列表元组与序列 | 13.4KB | 4 | 切片、浅/深拷贝、推导式、星号解包、namedtuple | | 05 | 字典与集合 | 18.3KB | 4 | 哈希表原理、可哈希性、视图对象、`Counter`/`defaultdict` | | 06 | 字符串与文本处理 | 16.0KB | 4 | 格式化三时代、f-string 高级、`re`、Unicode/UTF-8 | | 07 | 函数进阶与装饰器 | 17.6KB | 4 | 装饰器原理、`lru_cache`、`singledispatch`、签名内省 | | 08 | 迭代器与生成器 | 17.5KB | 4 | 迭代协议、`yield`、惰性求值、生成器管道、`itertools` | | 09 | 面向对象编程 | 19.1KB | 4 | MRO 与 `super()`、魔术方法、`property`、名称改写 | | 10 | 异常处理与上下文管理器 | 16.9KB | 4 | 异常族谱、异常链、异常组、`with` 与 `contextlib` | | 11 | 模块包与导入机制 | 15.5KB | 7 | `sys.modules` 缓存、搜索路径、绝对/相对导入、`importlib` | | 12 | 文件与IO | 15.6KB | 4 | 字符/字节边界、原子写、`pathlib`、`csv`/`json`、内存流 | | 13 | 数据类与类型系统 | 15.7KB | 4 | `dataclass` 全参数、`Enum`、泛型、`Protocol`、运行时内省 | | 14 | 标准库精讲 | 12.1KB | 4 | `collections`/`datetime`/`zoneinfo`/`math`/`hashlib`/`difflib` | | 15 | 并发编程线程进程与GIL | 14.2KB | 4 | GIL、选型决策树、同步原语、`concurrent.futures`、多进程 | | 16 | 异步编程asyncio | 13.0KB | 4 | 事件循环、任务与取消、同步原语、异步迭代、回环 socket | | 17 | 元编程与反射 | 15.0KB | 4 | 属性查找链、`__slots__`、动态建类、描述符、元类 | | 18 | 内存管理与性能 | 12.0KB | 4 | 引用计数、分代 GC、`weakref`、`timeit`/`cProfile`/`tracemalloc` | | 19 | 测试调试与工程化 | 12.7KB | 4 | `unittest`、`doctest`、`logging`、`argparse`、调试手段、打包 | | 20 | 综合实战项目 | 14.9KB | 11 | 日志分析器 / HTTP 服务器 / 待办 CLI 三个完整零依赖项目 | | 21 | 附录A 版本演进与新特性速查 | 26.5KB | 3 | 3.9→3.15 特性时间线、跨版本兼容写法、能力探测、环境体检 | | 22 | 附录B 陷阱清单与工程规范 | 26.8KB | 3 | Top 40 陷阱、PEP 8 速查、脚手架生成、40 条报错反查表 | 合计:**22 章 · 笔记 359KB · 96 个示例脚本 · 代码 392KB**。 --- ## 示例代码一览 所有示例都满足:**零第三方依赖 · 直接运行退出码 0 · 无未捕获异常 · 不往仓库写文件(一律 `tempfile`)**。 ### 阶段一 | 章 | 示例文件 | |---|---| | 01 | `hello_world.py` `interpreter_model.py` `bytecode_dis.py` `venv_and_path.py` | | 02 | `types_and_literals.py` `numbers_and_operators.py` `strings_basics.py` `mutability_demo.py` | | 03 | `control_flow.py` `functions_basics.py` `parameters.py` `scope_and_closure.py` | | 04 | `list_operations.py` `slicing_and_unpacking.py` `comprehensions.py` `tuple_and_namedtuple.py` | | 05 | `dict_basics.py` `dict_internals.py` `set_operations.py` `hashable_objects.py` | | 06 | `string_methods.py` `formatting.py` `regex_basics.py` `unicode_and_encoding.py` | ### 阶段二 | 章 | 示例文件 | |---|---| | 07 | `args_kwargs.py` `decorators.py` `functools_tools.py` `signature_introspection.py` | | 08 | `iterator_protocol.py` `generators.py` `generator_pipelines.py` `itertools_tour.py` | | 09 | `classes_basics.py` `inheritance_and_mro.py` `magic_methods.py` `properties_and_access.py` | | 10 | `exceptions_basics.py` `exception_chains.py` `custom_exceptions.py` `context_managers.py` | | 11 | `imports_basics.py` `module_search_path.py` `importlib_demo.py` + 子包 `packages_demo/`(4 个文件) | | 12 | `file_basics.py` `pathlib_tour.py` `csv_and_json_io.py` `memory_streams.py` | | 13 | `dataclasses_tour.py` `enum_and_literals.py` `generics_and_protocols.py` `typing_introspection.py` | ### 阶段三 | 章 | 示例文件 | |---|---| | 14 | `collections_tour.py` `datetime_and_timezone.py` `math_and_random.py` `text_and_hash_utils.py` | | 15 | `threading_basics.py` `gil_and_selection.py` `thread_pool_and_queue.py` `multiprocessing_demo.py` | | 16 | `async_basics.py` `asyncio_tasks.py` `async_primitives.py` `async_loopback_server.py` | | 17 | `reflection_basics.py` `dynamic_classes.py` `descriptors_demo.py` `meta_and_registry.py` | | 18 | `refcount_and_gc.py` `weakref_demo.py` `memory_footprint.py` `profiling_demo.py` | | 19 | `unittest_demo.py` `logging_demo.py` `argparse_cli.py` `debugging_tools.py` | ### 阶段四 | 章 | 示例文件 | |---|---| | 20 | `log_analyzer/`(4 文件)+ `run_log_analyzer.py`;`mini_http_server.py`;`todo_cli/`(4 文件)+ `run_todo_cli.py` | | 21 | `new_features_demo.py` `version_compat.py` `env_report.py` | | 22 | `pitfalls_tour.py` `error_message_lookup.py` `project_scaffold.py` | 两个附录里最值得先跑起来的三个脚本: ```bash python3 21-附录A-版本演进与新特性速查/env_report.py # 环境体检:这台机器上的 Python 有什么 python3 22-附录B-陷阱清单与工程规范/project_scaffold.py # 生成标准骨架并当场验证它能跑 python3 22-附录B-陷阱清单与工程规范/error_message_lookup.py # 报错速查(支持关键词过滤) ``` 第 20 章的三个项目可以直接当模板用: ```bash python3 20-综合实战项目/run_log_analyzer.py # 生成样例日志 → 解析 → 出报告 python3 20-综合实战项目/mini_http_server.py # 起回环 HTTP 服务 → 自测 → 关闭 python3 20-综合实战项目/run_todo_cli.py # JSON 持久化待办,多子命令串跑 ``` 第 22 章的报错速查表支持关键词过滤,可以当命令行工具: ```bash python3 22-附录B-陷阱清单与工程规范/error_message_lookup.py json python3 22-附录B-陷阱清单与工程规范/error_message_lookup.py pickle python3 22-附录B-陷阱清单与工程规范/error_message_lookup.py unpack ``` --- ## 仓库约定 - **零第三方依赖**:全仓库只 import 标准库。测试框架用 `unittest`(不引入 pytest)。 - **每个示例都能单独跑**:`python3 <章节目录>/<文件>.py` 直接出结果,退出码 0。 - **示例不写仓库**:需要落盘的一律用 `tempfile.TemporaryDirectory()`。 - **网络只在回环**:涉及网络的示例一律 `127.0.0.1` + 自动选端口,用完关闭,不留后台进程。 - **错误示范用 `try/except` 包起来**:演示"错误写法"时打印预期异常类型与信息,进程照常退出 0。 - **笔记结构统一**:目标 → 小节(先原理后代码)→ 易混点对比 → 最佳实践 → 陷阱清单 → 自测练习(答案均为完整可运行代码)→ 示例索引。 --- ## 姊妹仓库 同一套写法(章节笔记 + 可运行示例 + 自检脚本)的语言学习仓库: | 语言 | 仓库 | |---|---| | C++ | [cpp-learning](https://github.com/PhiloKun/cpp-learning) | | C | [c-learning](https://github.com/PhiloKun/c-learning) | | Java | [javastudy](https://github.com/PhiloKun/javastudy) | | Rust | [rust-learning](https://github.com/PhiloKun/rust-learning) | | Go | [Learning-Go](https://github.com/PhiloKun/Learning-Go) | | Python | **本仓库** | --- ## 许可 学习用途,随意取用。