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 |
| 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 增强、更好的调试体验
- 向后兼容性更谨慎:每个版本都有计划性的废弃和移除,推动代码现代化