📊 查看开源项目排名

📱 下载 AI Rank App

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 开源项目排名 看当前排位。

📱 在 AI Rank App 里持续关注

懒导入(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 默认跟长选项,除非显式传 dest
  • base64.urlsafe_b64decode 默认不再强制 padding(padded=True 可恢复旧要求)
  • unittest.TestCase.assertWarns / assertWarnsRegex 不再吞掉未匹配的警告,测试里可能冒出以前被盖住的告警

上述清单之外,升级清单里还应单独排:默认 UTF-8 的 I/O、isinstance 对 frozendict 的判断,以及 profiling 代码从 profile / 裸 cProfile 迁到 profiling.*。

来源

继续探索: 在 AI Rank 开源项目排名 看今天靠前的项目。

或 📱 下载 AI Rank App 在手机上查看。

本文使用自动化编辑辅助,于 2026 年 10 月 24 日依据 docs.python.org 《What’s New in Python 3.15》与 python.org/downloads 核对,未对 3.15 做自有性能测试。