Python各个版本的特点
简介
- Python 是一门解释型、高级、通用、动态类型编程语言,由荷兰人 吉多・范罗苏姆(Guido van Rossum) 在 1991 年正式发布;名字取自喜剧《蒙提・派森的飞行马戏团》,不是蟒蛇。
- 设计核心理念:可读性优先、简洁优雅(“人生苦短,我用 Python”)。
各版本特点
Python 3.7(2018)【经典稳定基线】
- ✅
@dataclass数据类(PEP557),大幅简化数据载体类写法Python - ✅ 内置
breakpoint(),替代import pdb;pdb.set_trace() - ✅
contextvars上下文变量,异步场景下替代部分 thread-local - ✅ dict 保留插入顺序正式写入语言规范(之前只是实现特性)
- ✅
async/await成为保留关键字;类型注解延迟求值(PEP563) - ✅ Windows 默认控制台、文件系统编码改为 UTF-8,减少乱码
适合:老框架、很多第三方库最低支持版本,生产大量存量项目
Python 3.8(2019)【海象运算符出圈】
- ✅ 海象运算符
:=,表达式内赋值(PEP572) - ✅ 仅位置参数
/:def func(a, b, /, c),a,b 只能位置传参 - ✅ f-string 调试语法:
f"{var=}"直接打印变量名 + 值 - ✅
math.prod()、pow支持三参数更友好;asyncio大量改进
适合:语法更顺手,很多新项目最低兼容版本
Python 3.9(2020)【字典合并 + 原生泛型】
- ✅ 字典合并运算符:
d1 | d2合并字典、d1 |= d2原地更新(PEP584) - ✅ 原生容器直接做类型注解:
list[int],不再需要from typing import List(PEP585) - ✅ 字符串新增
str.removeprefix()/str.removesuffix() - ✅ 解释器切换为 PEG 解析器(淘汰老 LL (1),为 match 语法铺路)
- ✅
Annotated灵活注解(PEP593)
适合:类型提示体验大幅提升,现代项目常用
Python 3.10(2021)【模式匹配大版本】
- ✅ 结构化模式匹配 match /case(PEP634,Python 版 switch)
- ✅ 联合类型简写:
int | str,替代Union[int, str] - ✅ zip 支持
strict=True,长度不一致直接抛异常,避免静默 bug - ✅ 错误提示优化,括号支持多行上下文管理器
- ⚠️
distutils标记弃用(后续版本移除)
适合:业务逻辑分支多、状态机、解析类代码
Python 3.11(2022)【性能暴涨、Self 类型、tomllib】⭐重点推荐
- ✅ 整体提速 60% 左右(CPython 核心字节码优化),近十年最大性能提升
- ✅
Self类型(PEP673),类方法返回自身类型不用写复杂前向引用 - ✅
tomllib内置,原生解析 TOML 配置文件 - ✅
except*异常组 ExceptionGroup,并发多异常收集(PEP654) - ✅ Traceback 精准定位表达式,报错箭头指向出错子表达式,调试体验质变
适合:现在新项目首选稳定版之一,兼顾性能和生态兼容性
Python 3.12(2023)【f-string 解禁、类型参数语法】
- ✅ f-string 语法放开限制:内部可以同引号、多行、写注释(PEP701)
- ✅ 泛型类 / 函数简化语法:
class A[T]:,不用TypeVar样板代码(PEP695) - ✅ 更清晰报错信息;asyncio、pathlib 增强
- ✅ 弃用旧的
setuptools相关打包逻辑,引导到 pyproject.toml
适合:喜欢简洁语法、类型驱动开发,生态已经比较成熟
Python 3.13(2024)【自由线程 + 实验 JIT,里程碑】
- ✅ 实验 Free-Threaded 版本(PEP703):关闭 GIL,多线程真正并行(Windows/macOS 提供安装包,生产慎用)
- ✅ 实验性 JIT 编译器(PEP744),长期性能路线
- ✅ 全新彩色 REPL,多行编辑、彩色回溯,交互式体验升级
- ✅
locals()语义标准化;移除一大批 PEP594 废弃老模块(cgi、nntplib 等)
适合:技术调研、多线程计算场景测试;不建议直接上生产
Python 3.14(2025)【注解默认延迟求值、模板字符串】
- ✅ PEP649:类型注解默认延迟求值,不再需要
from __future__ import annotations,前向引用不再需要字符串包裹 - ✅ 模板字符串字面量
t"xxx {var}"(PEP750),和 f-string 不同,返回模板对象,适合安全渲染(防注入) - ✅ 标准库增加子解释器支持、
compression.zstd内置 Zstd 压缩 - ✅ REPL 语法高亮、asyncio 自省能力增强
适合:大型类型注解多的项目,框架开发
Python 3.15(2026)【UTF-8 默认编码、frozendict、惰性导入】
- ✅ PEP686:默认源码 / IO 编码统一 UTF-8,彻底终结 Windows GBK 编码坑
- ✅ 内置
frozendict不可变字典、sentinel哨兵单例类型 - ✅ 显式惰性导入(PEP810),加快脚本启动速度
- ✅ 推导式支持解包;Tachyon 高频采样性能分析器
- ✅ 自由线程版稳定 ABI,方便 C 扩展适配无 GIL 模式
适合:追求跨平台编码一致性、工具脚本、启动敏感 CLI 程序
Python 3.16(开发预览版,尚未正式发布)
- ✅
iter()/aiter()新增stop_exception参数,遇到指定异常停止迭代 - ✅ memoryview 多维数组转一维支持 Fortran 序(适合数值库对接)
- ✅ frame 对象支持弱引用,方便调试器、观测工具
- ✅ 持续打磨 JIT、自由线程生态;继续清理老旧弃用 API
适合:只适合尝鲜、跟进新特性,严禁生产使用
快速选型参考
- 老项目维护、第三方库很老 → 3.7 / 3.8
- 稳定生产、追求性能 + 生态平衡(最推荐) → 3.11
- 喜欢新语法、类型开发、新项目 → 3.12
- 研究多线程并行、无 GIL、性能实验 → 3.13 + free-threaded
- 技术预览、尝新 → 3.14/3.15;3.16 仅预览
Web 框架
| 库 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | 3.15 | 3.16 |
|---|---|---|---|---|---|---|---|---|---|---|
| Django | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Flask | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| FastAPI | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Tornado | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Sanic | △ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Starlette | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
数据科学与机器学习
| 库 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | 3.15 | 3.16 |
|---|---|---|---|---|---|---|---|---|---|---|
| NumPy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Pandas | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| SciPy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Matplotlib | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Scikit-learn | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| PyTorch | △ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| TensorFlow | △ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | △ | ? | ? |
ORM 与数据库
| 库 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | 3.15 | 3.16 |
|---|---|---|---|---|---|---|---|---|---|---|
| SQLAlchemy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Django ORM | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Peewee | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Tortoise ORM | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
异步与 HTTP
| 库 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | 3.15 | 3.16 |
|---|---|---|---|---|---|---|---|---|---|---|
| Requests | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? |
| httpx | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| aiohttp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| urllib3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? |
测试与工具
| 库 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | 3.15 | 3.16 |
|---|---|---|---|---|---|---|---|---|---|---|
| pytest | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Pydantic | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Celery | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Gunicorn | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Uvicorn | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| Black | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| mypy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
实用工具
| 库 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 | 3.15 | 3.16 |
|---|---|---|---|---|---|---|---|---|---|---|
| Pillow | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| PyYAML | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? |
| cryptography | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |
| boto3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? |
| redis-py | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? |
| Click | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? |
| Rich | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | △ | ? | ? |