Power Platform 五大更新
📢 本文同步发布於公众号:AI Agent · 最佳实践
🔗 原文链接:https://simonwillison.net/2026/Oct/12/python-3-15/
Python 3.15 来了,3.10 再见,终于能用 3.11 了
Python 3.15 正式发布!这里有份必读的《Python 3.15 新特性》指南,今年由 3.14 和 3.15 的发布经理 Hugo van Kemenade 整理。作为一个要确保开源软件在所有受支持的 Python 版本上都能运行的人,我终于可以跟 Python 3.10 说再见,开始拥抱 Python 3.11 的特性了。
先来看看 Python 3.15 的一些亮点。
我最兴奋的是 PEP 810 带来的显式懒加载导入(Explicit lazy imports)。你可以这样导入模块:
lazy import json
lazy from pathlib import Path
模块会在后续代码中第一次使用这些符号时才真正被导入。
我的 LLM CLI 工具支持插件机制。之前在插件作者文档里,我不得不建议手动做懒加载导入,因为仅仅安装使用了 sentence_transformers 这类重量级依赖的插件,就可能让每次调用 llm 命令多花好几秒。懒加载导入直接解决了这个启动开销问题。
新的 [*sublist for sublist in lists] 解包语法也很优雅。下面这个例子摘自官方文档:
lists = [[1, 2], [3, 4], [5]]
[*L for L in lists]
# [1, 2, 3, 4, 5]
# 等价于 [x for L in lists for x in L]
sets = [{1, 2}, {2, 3}, {3, 4}]
{*s for s in sets}
# {1, 2, 3, 4}
# 等价于 {x for s in sets for x in s}
dicts = [{'a': 1}, {'b': 2}, {'a': 3}]
{**d for d in dicts}
# {'a': 3, 'b': 2}
# 等价于 {k: v for d in dicts for k, v in d.items()}
PEP 798: 推导式中的解包由 Adam Hartz 和 Erik Demaine 提出,是对 PEP 448 中解包语法的扩展——那个 PEP 早在 2015 年就随 Python 3.5 落地了。
Python 现有的追踪分析器从 cProfile 更名为 profiling.tracing,同时还迎来了一位令人兴奋的新成员——采样分析器 Tachyon,也叫 profiling.sampling。
采样分析器的工作原理是定期从运行中的进程捕获调用栈,然后据此计算出哪些函数占用了最多时间。它的开销非常低,能深入洞察运行中的系统,而且不需要事先对系统做任何埋点。
我以前用过 py-spy 这类工具来做这件事。现在这个能力已经内置到标准库里了。
如果你有一个正在运行的 Python 3.15 进程的 PID,可以这样开始采集样本(我在 macOS 上需要用 sudo):
sudo uv run --python 3.15 python -m profiling.sampling attach 1234
跟主程序交互一下,然后按 Ctrl+C 停止采集,就能看到一份报告,大概长这样:
它还能生成这样的火焰图和这样的热力图,甚至可以输出能在 Firefox profiler UI 中查看的格式。
Miguel Grinberg 前几天针对 3.15.0rc3 版本研究了《Python 3.15 到底有多快?》,发现性能总体上跟 3.14 差不多,例外是实验性的 JIT。JIT 相比标准的 3.15 解释器带来了 1.2 倍的提速(在一个斐波那契……







