py+Python Atlas版本特性图谱
官方文档 ↗
正式发布系列3.11.17

Python 3.11

更快,也更容易排查问题

解释器性能提升、结构化并发与更准确的回溯,改善运行和调试体验。

查看发布说明 ↗
THE HIGHLIGHTS

这一版,值得关注 06

01语法PEP 654 ↗

异常组与 except*

ExceptionGroup 将多个异常组合起来,except* 可按异常类型分别处理。

怎么用适用于并发任务中多个操作同时失败的场景。

Python 3.11
try:
    raise ExceptionGroup("batch", [
        ValueError("invalid input"),
        TypeError("unexpected type"),
    ])
except* ValueError as group:
    print("Value errors:", group)
except* TypeError as group:
    print("Type errors:", group)
02标准库

asyncio.TaskGroup

TaskGroup 在上下文退出时等待所有任务;任务失败时会取消关联任务并汇总异常。

怎么用让一组异步任务拥有明确的生命周期。

Python 3.11
import asyncio

async def main():
    async with asyncio.TaskGroup() as group:
        task = group.create_task(asyncio.sleep(0.1, result="done"))
    print(task.result())

asyncio.run(main())
03标准库PEP 680 ↗

标准库 TOML 解析

tomllib 可以读取 TOML 配置,不提供 TOML 写入能力。

怎么用解析 pyproject.toml 或应用配置。

Python 3.11
import tomllib

config = tomllib.loads('name = "Python Atlas"')
print(config["name"])
04类型PEP 673 ↗

Self 类型

typing.Self 表示当前类实例的类型,能在继承后保留子类的返回类型。

怎么用为链式调用和类方法标注返回类型。

Python 3.11
from typing import Self

class Builder:
    def reset(self) -> Self:
        return self
05开发体验PEP 657 ↗

更精确的异常位置

回溯可以指向一行中的具体表达式;add_note() 可以为异常补充上下文。

怎么用排查长表达式、嵌套字典访问及批处理失败。

Python 3.11
error = ValueError("invalid input")
error.add_note("Failed while reading record 42")
06性能

Faster CPython

自适应解释器等优化改善了许多常见工作负载的速度,收益取决于实际程序。

怎么用升级后用自己的工作负载测量性能,不将官方基准当作固定加速比例。

FROM THE SOURCE

官方完整变更目录 66

What’s New ↗

自动同步官方目录,涵盖语言、标准库、弃用及迁移变化。标题保留官方原文;中文解读精选于上方。

展开 Python 3.11 的全部变更 +