📊 查看开源项目排名
Python 3.15 已是 python.org 下载页 上的稳定发行线。对照官方下载列表与 What’s New in Python 3.15:3.15.0 于 2026-10-09 发布,3.15.1 于 2026-10-21 发布;维护状态为 bugfix,支持期写到 2031 年 10 月(PEP 790)。
文档摘要里点名的大块变化包括:懒导入、frozendict 与 sentinel 内建类型、默认 UTF-8 编码、推导式解包、面向自由线程构建的稳定 ABI,以及带 Tachyon 采样分析器的新 profiling 包。从旧版升级时,请直接看同页的 Porting to Python 3.15。
3.15 的发布节奏
来自 python.org/downloads(与 What’s New 开篇一致):
- 3.15.0:2026-10-09
- 3.15.1:2026-10-21(写作时下载页上的当前补丁)
- 维护:bugfix;支持至 2031-10(PEP 790)
需要可核验的构建时,优先走官网安装包与源码,而不是不明镜像。
→ 开源榜: 在 AI Rank 开源项目排名 看当前排位。
懒导入(PEP 810)
PEP 810 引入软关键字 lazy:导入声明仍可写在文件顶部,真正加载推迟到第一次用到名字:
lazy import json
lazy from pathlib import Path
print("Starting up...")
data = json.loads('{"key": "value"}')
What’s New 写明的限制:lazy 只能出现在模块顶层;不能写在函数、类体或 try/except/finally 里;星号导入和 __future__ 也不能懒加载。全局开关是 -X lazy_imports=all|normal 与环境变量 PYTHON_LAZY_IMPORTS,运行时还有 sys.set_lazy_imports()、sys.set_lazy_imports_filter()。模块也可定义 __lazy_modules__,让列表里的普通 import 按懒导入处理——方便同时兼容更旧的 Python。
内建不可变映射 frozendict(PEP 814)
PEP 814 增加内建 frozendict:创建后不可改,不是 dict 子类;键值都可哈希时整体可哈希;保留插入顺序用于展示,比较时不计顺序。赋值会抛 TypeError。
文档列出已接受它的标准库模块,包括 copy、decimal、json、marshal、pickle、pprint 等。仍写 isinstance(x, dict) 会漏掉 frozendict;官方建议改成 (dict, frozendict) 或 collections.abc.Mapping。
Tachyon 与 profiling 包
PEP 799 把分析工具收进 profiling:
profiling.tracing:确定性调用追踪(从cProfile迁入;cProfile仍作别名)profiling.sampling:统计采样分析器 Tachyon
What’s New 对 Tachyon 的描述包括:按 PID 挂到已在跑的进程、不必改代码或重启;可测墙钟 / CPU / GIL / 异常路径耗时;输出火焰图、collapsed stack、实时 TUI(--live)等;并有面向异步的选项。旧的 profile 模块已弃用,计划在 3.17 移除。
其他会碰到的语言与运行时变化
- 默认 UTF-8(PEP 686):未写
encoding的open()走 UTF-8。要旧行为可用PYTHONUTF8=0或-X utf8=0。跨版本代码仍建议显式写encoding=。 - 推导式解包(PEP 798):例如
[*L for L in lists]、{**d for d in dicts}。 - sentinel(PEP 661):更短的唯一哨兵值写法。
- 垃圾回收:What’s New 写明 3.14 早期增量 GC 已回退;3.15 仍用分代 GC(与 3.14.5 及之后相同)。
- 官方 Windows 64 位二进制使用尾调用解释器;官方 macOS 安装包默认带上自由线程支持。
迁到 3.15 时要改的代码点
Porting to Python 3.15 列出的具体项包括:
sqlite3.connect除database外均为仅关键字参数;若干Connection方法收紧了位置/关键字参数规则resource.RLIM_INFINITY恒为正;用负数冒充旧「无限大」的写法已弃用- 不支持底层系统调用的平台上,
mmap.mmap.resize被移除(以前会抛SystemError) - 打开过文件却未关闭的
xml.etree.ElementTree.iterparse迭代器会发资源警告——记得关闭 argparse在短选项与单横线长选项混用时(如-f/-foo),dest默认跟长选项,除非显式传destbase64.urlsafe_b64decode默认不再强制 padding(padded=True可恢复旧要求)unittest.TestCase.assertWarns/assertWarnsRegex不再吞掉未匹配的警告,测试里可能冒出以前被盖住的告警
上述清单之外,升级清单里还应单独排:默认 UTF-8 的 I/O、isinstance 对 frozendict 的判断,以及 profiling 代码从 profile / 裸 cProfile 迁到 profiling.*。
来源
- What’s New in Python 3.15(3.15.1 文档)
- Porting to Python 3.15
- Python 下载页
- PEP 790 — 3.15 发布计划
- PEP 810 — 显式懒导入
- PEP 814 — frozendict
- PEP 799 — profiling 包
- PEP 686 — 默认 UTF-8
继续探索: 在 AI Rank 开源项目排名 看今天靠前的项目。
或 📱 下载 AI Rank App 在手机上查看。
本文使用自动化编辑辅助,于 2026 年 10 月 24 日依据 docs.python.org 《What’s New in Python 3.15》与 python.org/downloads 核对,未对 3.15 做自有性能测试。