Python 3 各版本全面对比分析报告
Python 3 各版本全面对比分析报告
数据截止:2026 年 6 月 | 数据来源:python.org、PEP 文档、endoflife.date、 Ned Batchelder 汇总
一、版本发布总览
| 版本 | 首次发布日期 | 当前状态 | EOL 日期 | 最新补丁版本 |
|---|---|---|---|---|
| 3.0 | 2008-12-03 | ❌ 已停止支持 | 2009-06 | 3.0.1 |
| 3.1 | 2009-06-27 | ❌ 已停止支持 | 2012-04 | 3.1.5 |
| 3.2 | 2011-02-20 | ❌ 已停止支持 | 2016-02 | 3.2.6 |
| 3.3 | 2012-09-29 | ❌ 已停止支持 | 2017-09 | 3.3.7 |
| 3.4 | 2014-03-16 | ❌ 已停止支持 | 2019-03 | 3.4.10 |
| 3.5 | 2015-09-13 | ❌ 已停止支持 | 2020-09 | 3.5.10 |
| 3.6 | 2016-12-23 | ❌ 已停止支持 | 2021-12 | 3.6.15 |
| 3.7 | 2018-06-27 | ❌ 已停止支持 | 2023-06 | 3.7.17 |
| 3.8 | 2019-10-14 | ❌ 已停止支持 | 2024-10-07 | 3.8.20 |
| 3.9 | 2020-10-05 | ❌ 已停止支持 | 2025-10-31 | 3.9.25 |
| 3.10 | 2021-10-04 | ⚠️ 安全维护期 | 2026-10 | 3.10.20 |
| 3.11 | 2022-10-24 | ✅ 安全维护期 | 2027-10 | 3.11.15 |
| 3.12 | 2023-10-02 | ✅ 安全维护期 | 2028-10 | 3.12.13 |
| 3.13 | 2024-10-07 | ✅ 活跃维护 | 2029-10 | 3.13.14 |
| 3.14 | 2025-10-07 | ✅ 活跃稳定版 | 2030-10 | 3.14.6 |
| 3.15 | 预计 2026-10 | 🔧 开发中 (beta) | 预计 2031-10 | 3.15.0b3 |
支持策略说明(PEP 602):
- 前 2 年:完整维护(bug 修复 + 安全更新 + 二进制发布)
- 第 2–5 年:仅安全修复(可能仅源码发布)
- 5 年后:EOL,冻结所有变更
二、各版本主要变更详解
Python 3.0(2008-12)— 划时代的起点
- 字符串默认 Unicode,移除
u""字面量 print从语句变为函数print()range()、.keys()、.items()、.values()、zip()、map()、filter()返回迭代器- 新增
nonlocal关键字 - 引入函数注解(function annotations)
- 标准库大量重组
Python 3.1(2009-06)
- 新增
OrderedDict和Counter - 支持
__main__.py用于包执行
Python 3.2(2011-02)
- 新增
argparse(替代optparse) - 新增
concurrent.futures并发框架 .pyc文件移入__pycache__目录hasattr不再吞掉所有异常
Python 3.3(2012-09)
- 新增
yield from用于委托生成器 u""字面量回归(兼容 Python 2)- 新增
unittest.mock模块 - 哈希随机化(Hash Randomization)
- 新增
venv虚拟环境模块
Python 3.4(2014-03)
pip默认可用(通过ensurepip)- 新增
asyncio异步 I/O 框架(临时 API) - 新增
enum、statistics、pathlib、tracemalloc模块
Python 3.5(2015-09)
async/await语法(协程原生支持)- 矩阵乘法运算符
@(PEP 465) - 扩展解包(
*a, b = ...) - 新增
typing模块(类型提示) - 新增
subprocess.run()、os.scandir()
Python 3.6(2016-12)
- f-string 格式化字符串(PEP 498)
- 字典保持插入顺序(CPython 实现细节,非语言保证)
- 数字字面量下划线分隔(
1_000_000) - 变量注解语法(PEP 526)
- 新增
secrets模块 - kwargs 和类属性顺序保持
Python 3.7(2018-06)
from __future__ import annotations(延迟注解求值,PEP 563)async/await成为关键字(不再可作为标识符)dataclasses模块(PEP 557)- 字典插入顺序保证(语言规范级别)
- 模块级
__getattr__和__dir__(PEP 562) - 新增
contextvars、importlib.resources模块 breakpoint()内置函数
Python 3.8(2019-10)
- 赋值表达式 / 海象运算符
:=(PEP 572) - f-string
=说明符(f"{x=}"调试格式) - 仅限位置参数(
def f(x, /, y):)(PEP 570) - typing 增强:
TypedDict、Literal、Final、Protocol - 新增
importlib.metadata模块 - walrus 运算符可在表达式中赋值
Python 3.9(2020-10)
- 字典合并运算符
|和|=(PEP 584) - 标准集合类型支持泛型标注(
list[int]替代List[int])(PEP 585) - 放松装饰器语法(允许任意表达式)
- 新增
str.removeprefix()和str.removesuffix() - 新 PEG 解析器(替代 LL(1),为后续语法改进奠基)
- 新增
graphlib、zoneinfo模块 - 标准库类型注解统一使用小写内置类型
Python 3.10(2021-10)
- 结构化模式匹配
match/case(PEP 634-636) - 联合类型语法
X | Y(替代Union[X, Y])(PEP 604) - 更精确的错误信息(如 “did you mean”)
- 括号上下文管理器(多行
with无需\) - 参数规范提示(
ParamSpec,PEP 612)
Python 3.11(2022-10)— 性能飞跃
- 性能提升 10–60%(平均 1.25x,Faster CPython 项目)
- 精确错误位置(Traceback 标注具体表达式)
- 异常组
ExceptionGroup和except*(PEP 654) tomllib模块(解析 TOML,PEP 680)dataclass转换(PEP 681)- typing 增强:
Self(PEP 673)、LiteralString(PEP 675)、可变泛型(PEP 646) - 自适应特化解释器(PEP 659)— Faster CPython 核心
Python 3.12(2023-10)
- 新泛型和类型别名语法(PEP 695:
type Point = tuple[float, float]) - f-string 解析更灵活(PEP 701:允许嵌套引号、反斜杠、调试表达式)
- 移除
distutils(PEP 632) - 无效反斜杠转义序列产生
SyntaxWarning - 每解释器 GIL(C API 级别,PEP 684)
- 性能较 3.10 提升约 30–35%
Python 3.13(2024-10)— 实验性无 GIL 与 JIT
- 实验性自由线程模式(无 GIL,PEP 703)
- 实验性 JIT 编译器(PEP 744,基于复制 IR)
- 改进的交互式 REPL(支持多行编辑、语法高亮)
- 移除 19 个"死电池"模块(PEP 594)
- 移除
__int__对非整数类型的隐式调用 - 性能较 3.10 提升约 35–40%
Python 3.14(2025-10)— 自由线程正式支持
- 模板字符串 t-string(PEP 750:
t"Hello {name}") - 注解延迟求值成为默认(PEP 649/749)
- 禁止
finally中的return(长期警告终于变为错误) - REPL 语法高亮
- 自由线程模式正式支持(不再是实验性)
- 新 tail-call 解释器(性能提升 3–30%)
- 官方二进制文件包含 JIT
- Windows 安装管理器
- Android 二进制支持
- 性能较 3.10 提升约 40–50%
Python 3.15(预计 2026-10)— 预览中
- 显式惰性导入(PEP 810)
frozendict不可变字典(PEP 814)- 哨兵类型
Sentinel(PEP 661) - 解包支持进入推导式(PEP 798)
- UTF-8 作为默认编码(PEP 686)
- 包启动配置文件(PEP 829)
- 新性能分析工具包(PEP 799)
TypedDict扩展(PEP 728)- JIT 性能再提升 8–13%
三、性能演进对比
相对性能(以 3.10 为基准 1.00x)
| 版本 | 相对性能 | 较上一版本提升 | 关键优化手段 |
|---|---|---|---|
| 3.8 | ~0.95x | — | 基础版本 |
| 3.9 | ~0.97x | ~2% | 新 PEG 解析器(启动略慢) |
| 3.10 | 1.00x | ~3% | 基准线 |
| 3.11 | 1.25x | ~25% | 自适应特化解释器(PEP 659)、内联缓存 |
| 3.12 | 1.30–1.35x | ~5–10% | 特化解释器增强、编译优化 |
| 3.13 | 1.35–1.40x | ~5% | 实验 JIT、解释器优化 |
| 3.14 | 1.40–1.50x | ~10–15% | Tail-call 解释器、JIT 改进、自由线程特化 |
注:具体性能因工作负载差异较大。CPU 密集型任务提升更明显,I/O 密集型差异较小。
数据来源:Miguel Grinberg 基准测试、Reddit 社区测试、CPython 官方基准套件
性能优化里程碑
| 版本 | 核心性能技术 |
|---|---|
| 3.11 | Faster CPython 项目首个成果:自适应特化解释器、内联缓存、快速方法调度 |
| 3.12 | 特化覆盖范围扩大、LOAD_FAST优化、编译时改进 |
| 3.13 | 实验性 JIT 编译器(复制 IR 方案)、解释器分叉优化 |
| 3.14 | Tail-call 解释器(新调度机制)、JIT 正式包含在官方二进制文件 |
| 3.15 | JIT 架构改进(8–13% 提升)、tail-call 解释器用于 Windows 64 位 |
四、技术特性演进
类型系统演进
| 版本 | 类型系统特性 |
|---|---|
| 3.5 | typing模块首次引入 |
| 3.6 | 变量注解语法x: int = 0 |
| 3.7 | from __future__ import annotations(延迟求值) |
| 3.8 | TypedDict、Literal、Final、Protocol |
| 3.9 | 内置集合泛型化list[int](无需List[int]) |
| 3.10 | X | Y联合类型、ParamSpec |
| 3.11 | Self、LiteralString、可变泛型*Ts |
| 3.12 | type语句定义类型别名、新泛型语法class Box[T]: |
| 3.14 | 注解延迟求值成为默认行为 |
| 3.15 | TypeForm(PEP 747)、TypedDict扩展 |
异步编程演进
| 版本 | 异步特性 |
|---|---|
| 3.4 | asyncio模块(临时 API) |
| 3.5 | async/await原生语法 |
| 3.6 | 异步生成器、异步推导式 |
| 3.7 | async/await成为保留关键字 |
| 3.8 | 异步上下文管理器改进 |
| 3.11 | asyncio.TaskGroup(异常组支持) |
| 3.13+ | 自由线程模式下的并发新范式 |
错误信息改进
| 版本 | 改进内容 |
|---|---|
| 3.10 | “Did you mean” 建议、精确到行的错误定位 |
| 3.11 | 精确到表达式的错误标注(^^^^^指向具体子表达式) |
| 3.12 | 无效反斜杠转义产生SyntaxWarning(为 3.14 变为SyntaxError铺路) |
| 3.13 | 改进的 REPL 多行编辑与高亮 |
| 3.14 | REPL 语法高亮、finally中return变为错误 |
五、废弃与移除功能汇总
已移除的重要模块/功能
| 版本 | 移除内容 |
|---|---|
| 3.0 | 移除 Python 2 大量不兼容特性(u""字符串、print语句等) |
| 3.8 | macpath模块、__str__返回非 str 类型的隐式转换 |
| 3.9 | collections中抽象基类的别名(如collections.Mapping→collections.abc.Mapping) |
| 3.11 | 多个unittest弃用方法 |
| 3.12 | distutils模块(PEP 632)、imp模块、asynchat/asyncore弃用 |
| 3.13 | 19 个 PEP 594 “死电池” 模块:aifc、audioop、cgi、cgitb、chunk、crypt、imghdr、mailcap、msilib、nis、nntplib、ossaudiodev、pipes、sndhdr、spwd、sunau、telnetlib、uu、xdrlib |
| 3.14 | finally中的return语句变为错误、更多 C API 弃用 |
主要弃用时间线
| 特性 | 弃用版本 | 移除版本 |
|---|---|---|
distutils | 3.10 | 3.12 |
| PEP 594 死电池模块 | 3.11 | 3.13 |
imp模块 | 3.4 | 3.12 |
asynchat/asyncore | 3.6 | 3.12 |
cgi/cgitb | 3.11 | 3.13 |
finally中return | 3.8(警告) | 3.14 |
| 无效反斜杠转义 | 3.6(DeprecationWarning)→ 3.12(SyntaxWarning) | 3.14(SyntaxError) |
__int__隐式调用 | 3.10 | 3.13 |
六、版本选择建议
| 场景 | 推荐版本 | 理由 |
|---|---|---|
| 新项目生产部署 | 3.13 或 3.14 | 活跃支持期,性能最优,特性最新 |
| 追求长期稳定 | 3.12 | 安全维护期到 2028,生态兼容成熟 |
| 需要无 GIL 并发 | 3.13+(实验)或 3.14(正式) | 自由线程模式 |
| 需要最佳性能 | 3.14 | 较 3.10 提升 40–50%,含 JIT |
| 紧急升级需求 | 3.10 → 3.12+ | 3.10 将于 2026-10 EOL |
| 最大兼容性 | 3.11 或 3.12 | 大多数第三方库已完全支持 |
七、演进趋势总结
- 性能成为核心优先级:从 3.11 开始,Faster CPython 项目使每个版本都有显著性能提升,累计提升约 50%
- 类型系统持续增强:从 3.5 的
typing模块到 3.12 的type语句,类型提示越来越强大 - 无 GIL 时代开启:3.13 实验性引入,3.14 正式支持,是 Python 并发模型的里程碑
- JIT 编译器落地:从 3.13 实验到 3.14 正式包含,Python 进入 JIT 时代
- 标准库精简:PEP 594 标志着"精简电池"方向,移除过时模块
- 开发者体验改善:错误信息持续改进、REPL 增强、更好的调试体验
- 向后兼容性更谨慎:每个版本都有计划性的废弃和移除,推动代码现代化