Python周刊2026W38 | 标准流编码修复、PEP 845/846 草案、解析器提速 10%、集合字典二次复杂度

本周主线聚焦性能与语言细节修复。Python 修正 Windows 标准流编码判定与 bytearray 失败行为,重定向流改用区域设置编码;PEP 845、PEP 846 两份草案进入公开讨论。解析器按块分配 token,标准库解析提速约 8%-10%;社区文章提醒集合与字典可能因容器增大出现二次时间复杂度,Unicode 数据升至 18.0.0。

🐍 Python 官方开发进展

🔧 运行时

🐛 Windows 标准流编码与 bytearray 失败行为修复

Windows 旧版 stdio 模式下,各标准流编码改为按所连设备单独判定,sys.stdin 与 sys.stdout 编码可能不同,重定向流改用区域设置编码,依赖标准流编码的代码需留意差异;bytearray.resize() 与 take_bytes() 失败时不再破坏原对象,内容保持原样,无需再手动恢复。

⚡ 解析器多项优化,解析提速约 8%-10%

解析器改为按块分配 token,仅对名称、字面量和类型注释保留文本,并复用回溯结果与分支公共前缀,表达式与赋值目标共用同一套规则。标准库解析快约 8%-10%,大型项目实测提升相近,峰值内存下降,linter、IDE 等工具直接受益,用户无需改动代码。

🆕 Unicode 数据升级至 18.0.0

Unicode 数据更新到 18.0.0,新增字符与属性表随之生效,字素簇规则 GB9c 按新规范简化。文本切分、正则和字符串处理结果可能因此变化,使用新字符或依赖字素聚类的应用会自动受益,但需留意相关输出差异。

📋 PEP 流程

📝 PEP 845 与 PEP 846 两份新草案提交

Python 社区新增两份标准草案:PEP 845 提议在模式匹配中支持以点开头的值模式(多用于哨兵值),PEP 846 提议为类型别名增加文档字符串。二者均为草稿、尚未合入,语言行为暂不受影响,但未来可能据此调整,相关开发者可提前关注。

✏️ PEP 文档与仓库工具链修订

PEP 846 调整了文档字符串的放置说明与解析器措辞,PEP 545 将章节名更新为 builtins/functions 以修正译文指向;仓库同时统一了 peps/ 之外目录的格式化与 lint 配置,合并为顶层 pyproject.toml。均为文档与工程规范改动,不影响语言行为,但贡献者需留意新的 lint 规则。

🔄 PEP 845/846 进入公开讨论阶段

PEP 845 与 PEP 846 补充了 Discussions-To / Post-History 讨论帖链接,标志两份草案正式进入公开讨论阶段。想影响模式匹配或类型别名文档设计的开发者,可到 discuss.python.org 对应帖参与反馈。

🔥 头条

集合与字典也可能出现二次时间复杂度

一个粗略的第一近似是字典具有 O(1) 性能,但这只对较小的容器成立。本文探讨集合与字典的性能极限。DANIEL LEMIRE

别再写边界用例测试了,改用 Hypothesis

介绍如何在 Python 中使用 Hypothesis 进行基于属性的测试。从"我该测什么输入?"转向"什么不变量应当始终成立?"PEYTON GREEN • 匿名分享

Python 3.15 预览:惰性导入

了解 Python 3.15 的惰性导入如何工作、延迟加载重型模块如何缩短应用启动时间,以及哪些导入仍必须保持即时加载。REAL PYTHON

测验:Python 3.15 预览:惰性导入

一个 Python 3.15 模块可以留在文件的顶部,却直到你首次触碰它的名字才真正加载------新的 lazy 关键字会推迟所有工作。这听起来很优雅,直到你撞上限制:Python 在某些位置拒绝该关键字,有些导入必须保持即时,而只有当延迟的是正确的重型模块时,启动时间的收益才会出现。这份 12 题的测验会带你了解 lazy 如何延迟模块、它在何处被拒绝、lazy_modules 如何把同样的技巧带给更早版本的 Python,以及哪些导入无法被延迟。

志愿者招募:Django 筹款工作组

DJANGO 软件基金会

PyPI 事故报告:文件托管错误

一个配置错误的 Fastly 缓存节点导致 PyPI 下载在约两周内间歇性出现 502 和 503 错误。Fastly 网络内的一次金丝雀部署触发了这一错误配置,而 PyPI 自身 Fastly 配置中关于回源回退与范围请求行为的长期未被发现的缺陷,只有在调查过程中才浮出水面。这份事故报告梳理了完整的 CDN 架构------横跨 Backblaze B2、Amazon S3 Glacier Instant Retrieval 和 Conveyor 的三个源站------以及一条用户报告如何把故障缩小到单个节点。两个问题均已修复,下载自 8 月 28 日起完全恢复。

📖 文章与教程

好用的 Django 特性:Q() 对象

Django 的 ORM 提供了 filter() 方法,用于返回数据库中行的子集。凡是能用 filter() 做到的事,都能用 Q() 对象做到,后者封装了 filter 的参数。由于它是一个对象,你可以在代码中动态创建和管理过滤条件。TIM SCHILLING

Guido van Rossum 人物特写

BBN Times 刊发了一篇关于 Python 创造者 Guido van Rossum 的人物特写。文章涵盖了他的背景、Python 的诞生,以及他如何推动这门语言走到今天的状态。FELIX YIM

用 1024 字节实现一个 Python 解释器

Austin 给自己出了个难题:用 C 语言实现 Python 的一个极小子集。它并不完全是 Python,但颇有几分相似,而经过一番代码高尔夫,他做出了一个非常小巧的东西。AUSTIN Z. HENLEY

高效的 Python 开发环境

选择一个能让你真正动手写代码的 Python 开发环境。查找关于编辑器、uv、虚拟环境以及实用工具的教程与课程。REAL PYTHON

测验:高效的 Python 环境

没有两位 Python 开发者最终会采用完全相同的环境配置;理想的配置是个性化的,而非通用的。然而 shell、终端模拟器、pyenv 的版本切换、虚拟环境隔离,以及 pip/pipenv/poetry 的依赖迷宫都逼着你做出选择,而一个错误的选择会悄无声息地破坏可复现性。这份 13 题、不限时的测验让你检验哪些部分你已熟练掌握、哪些值得再仔细看看,内容涵盖编辑器、uv、虚拟环境和其他必备工具。

找一份远程 Python 数据工作有多难?

Piotr 分析了 2012 至 2026 年间 88,975 条 Hacker News 招聘帖。招聘版面在萎缩,远程工作达到顶峰,薪资变得更透明,资深岗位占据主导。PIOTR PŁOŃSKI

Python 计时函数

学习如何用 time 模块为你的 Python 代码计时,然后构建一个可作为上下文管理器使用的可复用 Timer 类。REAL PYTHON 课程

测验:Python 计时函数

八道题、不限时,外加一个 with 语句,就足以打磨你的 Python 计时技能。多数开发者会直接伸手去拿 time.time(),却没意识到 time 模块还打包了多个计时函数,它们在精度和开销上存在真实的取舍,而很少有人会把一次性的计时器重构成可复用的东西。这份测验会重新审视这些取舍,并追踪一个普通的 Timer 类如何演化为数据类,最终成为用一条 with 语句即可测量任意代码块的上下文管理器。

为 Wagtail 原型化一个新 CLI

Wagtail 8 引入了新的 API,让开发者得以创建一个用于操作 Wagtail CMS 的命令行工具。THIBAUD COLAS

🛠 项目与代码

django-ox:基于数据库的 Django 任务后端

一个生产环境的 Django 任务队列完全不需要 Redis、RabbitMQ 或任何 broker------django-ox 把每个后台任务存成数据库中的一行,并用一个普通的 worker 进程执行它。Django 提供了 Tasks API,但只有开发用后端,因此团队不得不额外配置、加固、监控并升级第二套数据存储,只为把任务入队;而在 django-ox 中,enqueue() 变成一条 INSERT,可以在你现有的 transaction.atomic() 内提交或回滚。文章涵盖 Django 5.2 与 6.0 上的安装配置、worker 配置以及后端取舍。

import-linter:定义并强制执行导入规则

一个跑偏的导入就能悄悄毁掉层次清晰的 Python 代码库,把原本设想的架构变成一团乱麻。随着项目增长,没有什么能阻止模块跨边界调用,于是架构规则只存在于开发者脑子里,并随着每次提交而侵蚀。Import Linter 解决了这个问题:它让你为模块间的导入声明明确的约束,自动强制执行,并通过基于浏览器的界面查看任意包的真实结构------把架构从一厢情愿变成可测试、可 CI 检查、值得信赖的契约。

Plotext 6:在终端中绘制数据、图像和视频

GITHUB.COM/PICCOLOMO • 由 Savino Piccolomo 分享

deployproof:AST 变异测试与凭据扫描

GITHUB.COM/SVSPRAVEEN

dbmask:发现并脱敏数据库中的敏感数据

GITHUB.COM/SEALANDSEACAT • 由 Siyuan Feng 分享

📅 活动

Real Python 每周办公时间问答(线上)

2026 年 9 月 16 日 REALPYTHON.COM

PyCon 喀麦隆 2026

2026 年 9 月 17 日至 9 月 20 日 PYTHONCAMEROON.ORG

PyData 布里斯托尔聚会

2026 年 9 月 17 日 MEETUP.COM

Python 莱顿用户组

2026 年 9 月 17 日 PYTHONLEIDEN.NL

PyLadies 都柏林

2026 年 9 月 17 日 PYLADIES.COM


往期精选


阅读原文

相关推荐
微软技术分享1 小时前
大模型网络结构:模型接口测试用例参考
python
Bruce_Liuxiaowei2 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖
做运维的阿瑞2 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
东姬AI2 小时前
语音抢着实时,视频也抢着实时:两条赛道同时冲刺,交汇点却还差一步
ai·数字人·多模态·视频生成·语音大模型
why-geo2 小时前
Hermes Agent 与 Python 的会产生什么样的碰撞
人工智能·python·ai编程
正经教主2 小时前
【FDE系列】阶段2:Day 29:FastAPI 进阶 — Pydantic 模型与完整 CRUD 实战
人工智能·python·fde
gCode Teacher 格码致知3 小时前
Pandas教学-6:coerce详解
python·pandas
梦在远山后3 小时前
Electron 与 FastAPI 如何完成流式 Agent 对话
python·langchain·agent
大衛說3 小时前
12 · 文件 I/O 与序列化
python