Python周刊2026W37 | asyncio 依赖图修复、内存越界写修补、3.15 默认 UTF-8
本周 Python 主线仍是稳定性与性能。asyncio 修复了任务依赖图与取消语义,依赖边不再缺失;解释器同时修补三处缓冲区越界写漏洞。打包侧 PEP 847 草案为包索引 API 引入结构化错误响应,标准库还修正了
datetime.time的 UTC 偏移比较。社区方面,Den Odell 谈性能预算与新书《Fast by Default》。
🐍 Python 官方开发进展
🔧 运行时
🐛 asyncio 任务依赖图与取消语义修复
asyncio 修复任务依赖图:wait_for(fut, 0) 与 gather() 产生的依赖边不再缺失或陈旧,Task 在刚抛出 SystemExit/KeyboardInterrupt 时也不再被追加取消。依赖任务内省的工具会看到更准确的关系图,普通用户行为基本不变。
🐛 修复缓冲区溢出与内存安全缺陷
xmlcharrefreplace()? 多写终止 NUL、struct.pack('0p', b'')? 空 Pascal 串越界写、PyBytesWriter_FinishWithSize()? 未校验长度,三处越界写已修复,此前可能破坏相邻内存。用户升级即可,无需改动代码。
🐛 标准库用户可见行为修复
datetime.time 在秒或微秒级 UTC 偏移下比较与哈希错误,已按整数归一化修正;tarfile 现在可直接把 getnames() 返回的带尾斜杠名传给 extract();libedit 构建写历史文件不再丢头。依赖旧行为的代码升级后需复核。
📦 包管理器与打包
🐛 pip 修复 keyring 测试在并行跑测下的随机失败
pip 的 test_keyring_cli_outdated_version 在 pytest-xdist 并行跑测时因其他用例改动日志级别而随机失败。该 PR 显式固定测试内的日志捕获级别,使断言不再受执行顺序影响。普通用户不受影响,仅参与 pip 开发的贡献者跑测试时结果更稳定。
📋 PEP 流程
📝 PEP 847 草案:为 Simple Repository API 引入 Problem Details 结构化错误响应
PEP 847 草案为 Simple Repository API 引入 Problem Details 结构化错误响应,让安装器与私有包源之间能交换机器可读的错误信息。目前仍是 Draft 且无参考实现,打包工具与镜像源暂无需改动。
✏️ PEP 832 草案回退为 `.venv` 重定向文件方案
PEP 832 草案在内部回退了设计,重新采用 .venv? 重定向文件方案,并补充 08-Sep-2026 的讨论记录。该约定影响虚拟环境探测,但方案仍处草案阶段,uv、IDE 与 CI 脚本暂不必调整。
🔄 PEP 825 标记为临时接受,PEP 785 修正参数名拼写
PEP 825 被标记为临时接受,流程元数据已同步更新,将进入实现与稳定化阶段;PEP 785 仅修正 leaf_exceptions 的参数名拼写,对行为无影响。按新提案编写代码前仍需留意后续可能的调整。
🔥 头条
性能剖析:让应用默认就快?
你如何为自己的 Python 应用规划性能?性能预算包含哪些内容,资源又该投在哪里?本周节目中,我们与 Den Odell 聊了他的新书《Fast by Default: Practical Performance Engineering》。REAL PYTHON podcast
Code-Review-Bench 上排名第一的开源代码审查工具?
由开放权重模型 GLM-5.2 驱动的 PR-AF 在 Martian Code-Review-Bench 上登顶,在 38 个可运行 PR 上取得 0.706 的 golden recall,在参与对比的 42 个工具中击败 cubic-v2 以及 qodo、coderabbit、greptile、copilot 和 devin 的各个版本。多数 AI 审查工具止步于浅层的 diff 摘要,因结论缺乏代码级证据而被忽略;PR-AF 则按 PR 汇总审查维度,生成临时审查 agent,并在采纳每条发现前拉取调用方代码片段与 import 上下文作为依据。文章涵盖基准测试快照、af? CLI 与原始 HTTP 入口、GitHub 行内评论,以及相较闭源工具约 10 倍的成本优势。
📖 文章与教程
用 Pydantic 与 FastAPI 构建插件架构?
插件必须先证明自己与平台兼容,才被允许承载生产流量。当 RAG 团队希望外部贡献者自带视觉与音频 embedding 模型时,真正的问题不是给出多大的灵活性,而是如何避免各自独立部署的服务破坏契约。文章把 /ready?、/catalog?、/encode/? 的 Pydantic 模型打包进共享的 API 契约库,由插件作者实现,并对每次注册做校验,使无法解析的响应在插件上线前就报错。
PyPI 下载统计不再计入元数据请求?
过去,向 PyPI 请求包的元数据也会被计入该包的下载统计。近期这一行为已修改,现在只更准确地统计 wheel、tar ball 与 zip 文件的下载。本文解释了这一变更。PYPI.ORG
用 Python 打造自己的人脸识别工具?
在本教程中,你将用 Python 构建自己的人脸识别命令行工具。你会学到如何用人脸检测在图像中定位人脸,并用人脸识别为其打标签。掌握这些知识后,你就能从零到一做出自己的人脸识别工具!REAL PYTHON
如何修复 ‘NoneType’ 对象没有属性这类错误?
当 Python 抛出 AttributeError: ‘NoneType’ object has no attribute ‘x’ 时,读起来像是解释器故意在说废话,但它其实传达了一个精确信息:你期望持有对象的那个变量其实是 None。SYSTEM CRAFT PRESS • Shared by Bob Morrison
Python 装饰器入门?
在本教程中,你会了解什么是 Python 装饰器,以及如何定义和使用它们。装饰器能让代码更易读、更易复用。来看看装饰器在底层如何工作,并动手练习编写自己的装饰器。REAL PYTHON
类型检查或许正是你的 agent 缺失的护栏?
编码 agent 会写大量 Python,而且写得很快。让 agent 调用类型检查器,可以阻止常见的类型 bug 混入。Pyrefly 是用 Rust 构建的开源类型检查器,速度足以跟上你 agent 的推理节奏。PYREFLY TEAM sponsor
不崩溃地测试异步 Python?
真正可用的异步 Python 测试模式:事件循环作用域、异步 fixture 生命周期,以及在默认假设下会失效的具体 pytest-asyncio / anyio 模式。DEV.TO • Shared by Anonymous
在 Cloudflare R2 上存储 Django 静态文件与媒体文件?
分析瘫痪真要命?
初级开发者不动手,是因为知道得还不够。资深开发者不动手,是因为知道太多可能出错的地方。两者都卡住了。KEVIN RENSKERS
OOP 为何存在?
了解面向对象编程(OOP)背后的基本原理,以及它如何与 Python 中定义类的语法相关联。RODRIGO GIRÃO SERRÃO
Python 3.15 预览:默认启用 UTF-8?
预览 Python 3.15 的 UTF-8 默认行为:看看有哪些变化,在预发布版本上试用,并让你的文件 I/O 在所有平台上都保持可移植。REAL PYTHON
小测验:Python 3.15 预览——默认启用 UTF-8?
同一段读文件的代码在不同机器上会解码出不同文本,因为 Python 默认的文本编码跟随操作系统 locale,直到 3.15 把 UTF-8 设为默认值。这种对隐式默认值的静默依赖,意味着“在我机器上能跑”的代码只是碰巧可移植,而一旦出问题又极难定位。本次小测验涵盖旧默认值的由来、哪些操作依赖它、如何找出依赖它的代码、如何在自己的函数与库中显式传入 encoding,以及何时恢复基于 locale 的行为。
空客 A380 的最优座位排布?
Mark 分析了一篇论文的结果,该论文确定了空客 A380 上的最优座位排布方式。MARK LITWINTSCHIK
🛠 项目与代码
shedskin:受限 Python 到 C++ 的转译器?
Shed Skin 能把纯的、隐式静态类型的 Python 3 转成优化后的 C++;在 80 多个非平凡程序(超过 25,000 行)上,它比 CPython 3.14 快 1 到 100 倍,平均 20 倍,中位数 12 倍。这种速度的代价是语言表面:只有受限的 Python 子集能编译,不能用第三方库,只支持约 25 个标准库模块,不支持嵌套函数和可变参数个数,且需要 Boehm 垃圾回收器,因此代码可能需要大幅重构甚至重写。文章讨论了代码规模在几百到几千行之间时何时值得做这种取舍、如何安装和编译,以及 sieve 示例对比 CPython、Numba 与 PyPy 的基准耗时。
用 Python 实现的浏览器 DOM!?
GITHUB.COM/BYTEFACE • Shared by byteface
mitti:新一代 ASGI 框架?
GITHUB.COM/GRANDIMAM
jsonstore:把 Django JSONField 数据当作虚拟模型字段?
这些 Django 字段存在于单个 models.JSONField 之中,不创建列、不产生迁移,却仍能在 ModelForms、admin、过滤、排序和投影中正常工作。这项能力处在两个代价高昂的极端之间:裸 JSONField 会迫使应用代码手工解析无类型字典,并丢掉 Django 的转换、校验与表单控件;而当记录需要不同属性、或属性频繁变化时,真实列又太重。文章涵盖安装与版本约束、ModelForms 和 ModelAdmin 中的虚拟字段、共用的 django.db.models 参数、json_field_name 与 json_key 路径选择,以及何时该换成真实字段。
📅 活动
每周 Real Python Office Hours 问答(线上)?
2026 年 9 月 9 日 REALPYTHON.COM
Python Atlanta?
2026 年 9 月 10 日至 9 月 11 日 MEETUP.COM
PyDay Boyacá 2026?
2026 年 9 月 12 日至 9 月 13 日 PYDAY.CO
DFW Pythoneers 第二个周六教学聚会?
2026 年 9 月 12 日 MEETUP.COM
DjangoCologne?
2026 年 9 月 15 日 MEETUP.COM
PyCon Cameroon 2026?
2026 年 9 月 17 日至 9 月 20 日 PYTHONCAMEROON.ORG
往期精选
- Python周刊2026W36 | Python 3.15候选版、RISC-V获CPython支持、PEP 843、asyncio修复
- Python周刊2026W35 | Mojo 开源发布 1.0、PEP 843 export 推进、PEP 839 冻结构建器、PyCon AU 2026
- Python周刊2026W34 | Python 3.12.14 安全发布、Django 转年度发布、asyncio 连接泄漏修复、PEP 843 export 草案推进
- Rust周刊2026W36 | rustup 1.29.1 更名 target tuple、Wasmi 2.0 提速 2.2 倍、Box map 稳定化、aarch64 FFI 传参修复、Cargo feature 元数据
- Web前端周刊2026W37 | Shopify 转原生、React 编译 Rust 化、Vitest 5.0、Rslib 1.0
- Java周刊2026W37 | Quarkus 三维护版齐发、Micronaut 三公告、Kotlin 2.4.20
扫码关注「右耳朵猫AI」

- 点赞
- 收藏
- 关注作者
评论(0)