Python教程

以 Python 3.14 系列为教学基线,覆盖语言基础、对象语义、内置容器、函数、模块与包、异常与 IO、面向对象、迭代器与生成器、类型提示、并发、工程实践、CPython 运行机制与综合实验。

Python 程序设计学习路线与教程导航

本章覆盖:课程定位:语言基础、Pythonic 编程、工程基础与 CPython 运行机制;教学基线:Python 3.14 系列;当前核验维护版本为 3.14.7;学习路径:基础语法 → 内置类型 → 函数 → 模块 → 异常/IO → OOP → 迭代器/生成器 → 类型系统 → 并发 → 工程与运行时;Python 语言、CPython 实现、标准库、PyPI 第三方生态的边界;Python 与数据结构算法、Web 框架、数据分析、AI/Agent 课程的边界;学习方法:解释器实验、单元测试、类型检查、调试、性能测量与源码阅读。

Python 起源、定位、版本体系与生态

本章覆盖:Python、Guido van Rossum 与语言发展历史;Python 作为动态、强类型、通用高级语言的定位;Python 语言规范与 CPython / PyPy 等实现的区别;Python 2 与 Python 3 的历史边界;Python 3.14 作为当前课程基线;标准库、PyPI、Web、数据、自动化、AI/Agent 等生态定位。

名字、对象、赋值与动态类型

本章覆盖:Python 变量更准确地理解为名字绑定 name binding;对象拥有身份、类型和值;赋值让名字绑定到对象;动态类型意味着名字可绑定不同类型对象;类型属于对象而不是变量槽位;del 删除绑定而不是“手动释放对象”。

str:Unicode 字符串、索引、切片与不可变性

本章覆盖:Python str 表示 Unicode 文本;索引与切片;字符串不可变;常用查找、替换、拆分、拼接方法;join 通常优于循环反复拼接;字符数、字节数与显示宽度不是同一概念。

模块、import 与名字空间

本章覆盖:模块对象;import module;from module import name;as 别名;模块名字空间;重复 import 与模块缓存基础。

异常体系、Traceback 与常见异常类型

本章覆盖:BaseException 与 Exception;TypeError、ValueError、KeyError、IndexError;AttributeError、ImportError、OSError;traceback 调用链;异常对象携带错误上下文;不要使用 except: 吞掉所有异常。

类型提示与渐进式类型系统

本章覆盖:type annotation;动态运行语义与静态类型检查是两层机制;类型提示通常不会自动在运行时强制校验;渐进式 typing;函数参数与返回值注解;变量注解。

datetime、time 与时间处理

本章覆盖:datetime.date / datetime.datetime;timedelta;timezone-aware 与 naive datetime;zoneinfo;strftime / strptime;time.perf_counter 用于耗时测量。

Python 数据模型、对象身份与 CPython 对象实现边界

本章覆盖:Python 语言层的 object / type / value / identity;CPython 中 PyObject 等属于实现层;引用关系与对象图;不要把 CPython 内部结构当成所有 Python 实现保证;实现细节可以用于理解性能,但必须标注版本。

命令行日志分析器

本章覆盖:argparse;pathlib;文件流式读取;正则表达式;Counter / dict 统计;datetime;logging;单元测试。

安装 Python 3.14、解释器、REPL 与运行脚本

本章覆盖:Python 官方发行版与操作系统安装方式;python / python3 / py 启动命令的环境差异;交互式解释器 REPL;运行 .py 脚本;python -m 的模块运行方式;python --version 与解释器路径检查。

编码与解码:str、bytes 与 UTF-8

本章覆盖:文本 str 与二进制 bytes 的边界;encode;decode;UTF-8;UnicodeDecodeError / UnicodeEncodeError;文件、网络和 API 边界需要明确编码。

__name__、__main__ 与应用入口

本章覆盖:__name__;if __name__ == '__main__';模块被导入与直接运行;python -m;将可复用逻辑与入口代码分离。

try / except / else / finally

本章覆盖:try;except;多个异常处理分支;else;finally;异常匹配与继承关系;清理逻辑与业务恢复逻辑的区别。

__init__、self 与对象初始化

本章覆盖:__new__ 与 __init__ 的职责边界基础;self;实例初始化;构造参数;不要把 __init__ 理解为真正分配对象内存的构造器;可变默认参数同样影响方法。

for 循环背后的迭代机制

本章覆盖:for 调用 iter();反复 next();StopIteration 结束循环;容器可重复迭代与迭代器一次消费的区别;自定义可迭代对象。

引用计数与循环垃圾回收

本章覆盖:CPython 引用计数的高层机制;引用计数归零通常触发对象回收;循环引用需要循环 GC;gc 模块;资源释放仍应依靠 context manager,而不是等待 GC;其他 Python 实现的 GC 策略可能不同。

本地配置与任务管理 CLI

本章覆盖:模块化项目结构;dataclass / TypedDict;JSON 或 TOML 配置;命令行参数;异常体系;日志;pyproject.toml。

源代码、字节码、解释器与 CPython 执行链

本章覆盖:.py 源文件;解析、编译为 code object / bytecode 的高层过程;__pycache__ 与 .pyc 的基础定位;Python 虚拟机执行字节码的高层认识;字节码属于 CPython 实现细节,不是跨实现稳定 ABI;解释型语言不等于“完全没有编译阶段”。

可变对象、不可变对象与对象身份

本章覆盖:mutable 与 immutable;int、str、tuple 等常见不可变对象;list、dict、set 等常见可变对象;id() 的用途与边界;对象可变性对共享引用和函数调用的影响;“变量值改变”与“对象原地修改”的区别。

list:动态序列、常用操作与复杂度意识

本章覆盖:创建、索引、切片;append、extend、insert;remove、pop、clear;sort 与 sorted 的区别;list 作为动态数组的 CPython 高层实现认知;头部插入删除与尾部 append 的复杂度差异。

raise、异常链与自定义异常

本章覆盖:raise;重新抛出;raise ... from ...;__cause__ 与异常链的概念;自定义 Exception 子类;业务异常类型不应过度碎片化。

generator、yield 与生成器状态

本章覆盖:生成器函数;yield;调用生成器函数返回 generator object;局部状态暂停与恢复;生成器也是迭代器;惰性产生数据。

heapq、bisect 与常用算法型标准库

本章覆盖:heapq 最小堆;heappush / heappop;nlargest / nsmallest;bisect;有序序列插入与查找;这些工具是算法能力的 API 支撑,不替代完整算法课程。

异步批量 HTTP 数据采集器

本章覆盖:async / await;TaskGroup 或 gather;并发数量控制;超时与取消;JSON 数据;文件缓存;HTTP 第三方客户端可作为项目依赖,不把其 API 写进 Python 核心。

IDE、项目目录、终端与调试运行

本章覆盖:VS Code / PyCharm 等 IDE 的角色;项目目录与工作目录;选择正确 Python Interpreter;终端运行与 IDE 运行的环境差异;断点、单步执行、变量查看和调用栈;解释器路径错误与环境错配的常见排查。

==、is、哈希性与相等语义

本章覆盖:== 比较值相等语义;is 比较对象身份;None 通常使用 is / is not;hashable 的基本要求;不可变不自动等于一定可哈希;相等对象与哈希值契约的基础。

tuple、range 与不可变序列

本章覆盖:tuple;单元素 tuple 的逗号;packing / unpacking;tuple 不可变但成员对象仍可能可变;range 的惰性整数序列;tuple 作为记录与不可变键的适用边界。

可变默认参数陷阱与安全默认值模式

本章覆盖:默认参数对象只创建一次;list/dict 作为默认值导致状态共享;None 作为哨兵值;不可变默认值通常更安全;理解问题根因而不是死背写法。

import 搜索路径、sys.path 与循环导入

本章覆盖:import 搜索路径的高层模型;sys.path;当前工作目录与包根目录;循环导入形成的部分初始化模块;通过重构依赖方向消除循环导入;不要把修改 sys.path 当长期项目结构方案。

yield from 与生成器委托

本章覆盖:yield from;委托子迭代器;组合生成器;StopIteration.value 的高级语义只作了解;send/throw/close 不作为业务主线深入。

泛型、TypeVar 与参数化类型

本章覆盖:generic function;TypeVar;generic class;Python 3.12+ 泛型参数语法基础;约束与 bound;静态类型关系不改变对象运行时本质。

queue 与线程安全的生产者消费者

本章覆盖:queue.Queue;put / get;task_done / join;有界队列与背压基础;生产者消费者模型;优先消息传递而不是共享复杂可变状态。

os、sys 与运行环境交互

本章覆盖:os.environ;os.getcwd;os.path 与 pathlib 的定位差异;sys.argv;sys.path;sys.stdin / stdout / stderr;sys.exit。

CPython 字节码与 dis

本章覆盖:compile;code object;dis.dis;字节码指令;3.11+ adaptive/specialized interpreter 的高层认识;字节码会跨 Python 版本变化,不能作为稳定接口。

运算符、比较链与逻辑短路

本章覆盖:算术运算符;//、%、**;比较运算符;链式比较;and、or、not;短路求值;运算符优先级与可读性。

dict:映射模型、常用 API 与插入顺序

本章覆盖:key-value 映射;get、setdefault、update;keys、values、items;字典键必须可哈希;Python 语言保证 dict 保持插入顺序;字典查找平均复杂度与哈希表的高层认识。

Python 参数传递:Call by Sharing / Assignment

本章覆盖:函数形参绑定到调用时传入的对象;不是 C 式值拷贝模型的简单翻版;也不是语言级“引用传递”;修改可变对象会被调用者观察到;重新绑定形参不会重绑定调用者名字;与浅拷贝/深拷贝的关系。

venv:项目隔离与解释器环境

本章覆盖:为什么不同项目需要依赖隔离;python -m venv;激活与退出环境;虚拟环境中的解释器和 site-packages;IDE 选择虚拟环境解释器;虚拟环境不等于容器。

contextlib 与自定义上下文管理器

本章覆盖:contextlib.contextmanager;yield 前后分别对应进入/退出;closing;suppress 的谨慎使用;ExitStack 的高层用途;类式与生成器式上下文管理器的选择。

继承、方法重写与 super()

本章覆盖:单继承;方法重写;super();父类初始化;继承用于 is-a 关系;组合优于继承的常见场景。

列表、集合、字典推导式

本章覆盖:list comprehension;set comprehension;dict comprehension;条件过滤;多层循环;推导式内部作用域。

Protocol 与结构化子类型

本章覆盖:typing.Protocol;structural subtyping;与鸭子类型的关系;静态表达“只要有这些行为即可”;runtime_checkable 的边界;Protocol 与 ABC 的选择。

GIL、CPython 线程模型与 free-threaded build

本章覆盖:GIL 是 CPython 实现机制,不是 Python 语言规范;常规 CPython 中同一时刻通常只有一个线程执行 Python 字节码;阻塞 I/O 期间解释器可释放 GIL;I/O 密集任务仍可受益于线程;Python 3.14 支持可选 free-threaded build;free-threaded 并非默认构建,不能据此宣布“GIL 已经消失”。

argparse 与命令行程序

本章覆盖:ArgumentParser;位置参数;可选参数;类型转换;choices / required;自动 help;命令行工具的输入边界设计。

list / dict / set 的 CPython 实现与复杂度边界

本章覆盖:list 动态数组高层实现;dict / set 哈希表高层实现;平均 O(1) 不等于任何情况恒定时间;字典保持插入顺序是语言语义,但具体表结构是实现细节;容器增长策略不得死背为跨版本固定实现;性能结论应配合实际基准验证。

多进程 CPU 计算任务调度器

本章覆盖:ProcessPoolExecutor;CPU 密集任务;可序列化任务参数;进程池初始化;任务失败处理;线程池/进程池基准对比。

Truth Value Testing 与条件表达式

本章覆盖:真值测试;False、None、数值 0、空容器等常见 falsy 值;自定义对象通过 __bool__ / __len__ 参与真值判断;条件表达式 x if condition else y;不要机械写 == True / == False。

LEGB、global 与 nonlocal

本章覆盖:Local;Enclosing;Global;Builtins;global;nonlocal;读取名字与赋值名字对作用域解析的影响。

pip、PyPI 与依赖安装

本章覆盖:python -m pip;install / uninstall / list / show;PyPI;版本约束;直接依赖与传递依赖;不要在错误解释器环境中 pip install。

open、文本文件、编码与缓冲

本章覆盖:open;文本模式;encoding;read / readline / readlines;write / writelines;with open(...);newline 与平台差异基础。

多继承、MRO 与 cooperative super

本章覆盖:multiple inheritance;Method Resolution Order;__mro__;C3 linearization 的高层认识;super() 按 MRO 链协作;Mixin 模式。

TypedDict 与结构化字典数据

本章覆盖:TypedDict;必需键与非必需键;字典运行时仍是普通 dict;适合 JSON 风格数据建模;与 dataclass / Pydantic 等对象模型的边界。

内存占用、对象共享与常见“缓存”误区

本章覆盖:sys.getsizeof 的边界;容器大小不自动包含所有递归引用对象;字符串驻留 interning 属于实现/优化细节;小整数对象复用等现象不能当业务正确性依据;使用 is 判断数值/字符串相等是错误做法;性能优化不能依赖偶然缓存行为。

插件式文本处理框架

本章覆盖:包与模块;抽象基类 / Protocol;装饰器注册或配置注册;动态导入基础;函数对象与回调;日志和异常隔离;插件接口设计。

切片、复制与序列修改

本章覆盖:slice(start, stop, step);负索引;切片赋值;浅复制 list[:] / copy();切片通常创建新序列对象;大序列切片的内存成本。

闭包 Closure 与状态封装

本章覆盖:嵌套函数;自由变量 free variable;闭包保留外层环境;nonlocal 修改闭包状态;闭包作为函数工厂;late binding 问题与解决思路。

pyproject.toml 与现代 Python 项目结构

本章覆盖:pyproject.toml 的 [build-system]、[project]、[tool] 高层结构;src layout 与 tests 目录;项目元数据和依赖声明;构建后端概念;wheel 与 source distribution 基础;打包/发布流程只建立工程认知,不深入 PyPI 发布维护。

鸭子类型、多态与协议式编程

本章覆盖:duck typing;“看行为而不是只看继承树”;多态调用;EAFP 与 LBYL 的工程边界;抽象接口与动态对象模型;与 typing.Protocol 的后续衔接。

itertools 与迭代器组合工具

本章覆盖:chain;islice;count;cycle / repeat;product / permutations / combinations;groupby 的相邻分组语义;惰性迭代工具的组合思想。

timeit、cProfile 与性能定位

本章覆盖:先测量再优化;timeit 微基准;cProfile;pstats;算法复杂度通常比语法微优化更重要;I/O、网络和数据库瓶颈需要端到端观察。

浅拷贝、深拷贝与 copy 模块

本章覆盖:赋值只复制引用绑定;shallow copy;deepcopy;嵌套可变对象共享;循环引用处理的高层认识;深拷贝不是所有对象的通用最佳方案。

lambda 与高阶函数

本章覆盖:lambda 表达式;单表达式限制;函数作为参数;map/filter 的定位;sorted(key=...);可读性优先于炫技。

pathlib、shutil 与 tempfile

本章覆盖:Path;路径拼接与遍历;exists / is_file / is_dir;read_text / write_text 的适用场景;shutil 复制/移动/删除;tempfile 临时文件与目录。

Python 3.14 注解延迟求值与运行时类型反射边界

本章覆盖:Python 3.14 默认采用延迟注解求值的新语义;__annotations__ 不应被旧版本经验机械推断;typing.get_type_hints;forward reference;类型检查器与运行时框架读取注解的差异;版本敏感结论必须按 3.14 文档验证。

ProcessPoolExecutor 与 CPU 密集任务

本章覆盖:ProcessPoolExecutor;利用多个 CPU 核心;任务与参数需要可序列化的常见要求;进程池启动和 IPC 成本;小任务不一定适合进程池;线程池与进程池的选型。

unittest 与 pytest 测试基础

本章覆盖:unittest.TestCase 与断言;setUp / tearDown;测试正常路径、边界和异常;pytest 作为高价值第三方测试工具;pytest fixture / parametrize 只建立实用基础;测试框架不是业务逻辑的一部分。

Python 性能优化的边界与优化路线

本章覆盖:选择正确数据结构和算法;减少不必要对象和复制;生成器降低峰值内存但不保证更快;I/O 并发与 CPU 并行采用不同方案;第三方 C/C++/Rust 扩展和 NumPy 等属于后续专项;不要在没有 profile 证据时进行复杂微优化。

Python Agent 工具层前置实验

本章覆盖:纯 Python 工具函数建模;类型提示与 Protocol;异步 I/O;JSON 输入输出;超时、重试与错误分类;日志与测试;不引入完整 Agent 框架,只训练后续 AI/Agent 开发所需 Python 基础。

bytes、bytearray 与 memoryview

本章覆盖:bytes 不可变字节序列;bytearray 可变字节序列;索引得到整数的语义;二进制协议、文件和网络数据;memoryview 避免部分不必要复制;文本 API 与二进制 API 不应混用。

JSON、CSV 与 pickle

本章覆盖:json.dumps / loads;json.dump / load;JSON 类型映射;csv.reader / writer;pickle 的 Python 对象序列化;绝不反序列化不可信 pickle 数据。

async / await 与 coroutine

本章覆盖:async def;coroutine object;await;asyncio.run;协作式调度;调用 coroutine 不等于已经执行。

pdb、traceback 与调试

本章覆盖:breakpoint();pdb;断点与单步;查看调用栈;traceback 模块;通过最小复现定位异常。

enumerate、zip 与并行遍历

本章覆盖:enumerate 代替手动下标计数;zip 并行遍历;zip 的最短输入停止语义;strict=True 的使用意义;多变量解包与循环结合。

re 正则表达式与文本提取

本章覆盖:re.search / match / fullmatch;findall / finditer;sub / split;分组与命名分组;raw string 与转义;简单解析优先普通字符串 API,复杂模式再用正则。

Task、Future、Event Loop 与任务调度

本章覆盖:event loop;asyncio.create_task;Task;asyncio.Future 与 concurrent.futures.Future 的区别;sleep / I/O 等待时让出控制权;不要在事件循环中执行长时间阻塞代码。

PEP 8、代码质量、格式化与静态检查工具链

本章覆盖:PEP 8 风格;PEP 257 文档字符串基础;formatter / linter / type checker 的职责差异;Black / Ruff / mypy 等作为工程工具示例;自动工具不能替代正确设计;团队项目应统一配置而非每个人各自一套风格。

__slots__、对象属性存储与内存边界

本章覆盖:普通实例通常拥有 __dict__;__slots__ 的基本作用;__slots__ 可能减少部分实例属性存储开销;__slots__ 会改变动态添加属性能力;继承与 slots 组合需要谨慎;不要把 __slots__ 当通用性能银弹。

match / case 结构化模式匹配

本章覆盖:match / case 基本语法;字面值模式;捕获模式与通配符 _;序列模式;映射模式;类模式基础;guard 条件与 if/elif 的选择边界。

抽象基类、元类与类创建机制基础

本章覆盖:abc.ABC;@abstractmethod;type 既是常见对象类型又可参与动态创建类;metaclass 的高层概念;类创建钩子属于高级扩展机制;元类理解即可,不作为日常业务代码默认工具。