查看原文
其他

终于,Python 标准库要做“瘦身手术”了!

Python猫 2022-04-12
△点击上方“Python猫”关注 ,回复“1”领取电子书

大家好,我是猫哥。

Python 社区有一个比较独特的概念是“内置电池”(Batteries Included),指的是 Python 自带丰富多样的标准库,开箱即用,动力十足。根据官方文档显示,Python 内置了 200 多个标准库,它们对于 Python 的流行功不可没。

但是,Python 已经发展了 30 年,很多标准库已经过时了,已经在“漏电”了,这对于语言的发展来说,并不是一件好事。

在 2019 年的官方 PyCon 大会后,PEP-594 被提了出来,旨在为标准库动一次“手术”,剔除掉质量差、功能落后、代码过时的标准库,让 Python 保持轻量高效,持续焕发生机活力。

当时,猫哥得知了这一消息,兴致冲冲地写了一篇文章《聊聊 Python 的内置电池》(点击阅读),向广大 Python 开发者传达了这一个好消息。

当时,PEP-594 正处于草案状态,没想到一晃就是三年,如今这个 PEP 终于是被接受了!

从 3.11 版本到 3.13 版本,Python 内置电池的“瘦身手术”将会进行。

让我们祝愿它变得越来越好,越来越健康!

---以下是 PEP-594 被采纳的新闻报道---

来源:OSCHINA
出处:https://www.oschina.net/news/186855/python-removes-dead-batteries-from-stdlib

由 Python 贡献者 Christian Heimes 和 Brett Cannon 提出的一项,从 Python 标准库中删除过时的和未维护的模块的 Python Enhancement Proposal (PEP) 594 已被批准通过。该提案最初于 2019 年提交,但直到近日才(3 月 11 日)被批准用于 Python 3.11。

有了这个 PEP,Python 3.11 会将某些模块标记为已弃用,Python 3.12 将是最后一个版本包括这些模块。在 Python 3.13 中,不推荐使用的模块将被完全删除。

此 PEP 提出了一个要从标准库中删除的标准库模块清单。这些模块大多是历史数据格式(例如 Commodore 和 SUN 文件格式)、API 和早已被取代的操作系统(例如 Mac OS 9),或者具有安全隐患和更好替代方案(例如密码和登录)的模块。

一直以来,Python 都有着“batteries included”的理念;其目标是提供一个通用的标准库来处理许多常见的开发任务,用户不必为了编写简单的 Web 服务器或解析电子邮件而弄清楚如何下载和安装单独的包。

但随着时代的变迁,PyPI(née Cheeseshop)、setuptools 和 pip 的引入,下载和安装包变得简单直接。Python 如今也拥有了丰富而充满活力的第三方包生态系统。另一方面,Python 的标准库堆满了杂乱无章的、不必要的功能重复和可有可无的特性。

基于此,官方认为:

  • 任何额外的模块都会增加 Python 核心开发团队的维护成本。团队资源有限,减少的维护成本可以腾出开发时间用于其他改进。
  • 标准库中的模块通常受到青睐,并被视为问题的实际解决方案。大多数用户只有在有令人信服的理由时才会选择第三方模块来替换 stdlib 模块,例如, 用lxml替代xml。删除未维护的 stdlib 模块增加了社区贡献的模块被广泛使用的机会。
  • 一个精简的标准库有利于资源有限的平台,例如只有几百 KB 存储空间的设备(如 BBC Micro:bit)。BeeWare 或 WebAssembly(如 pyodide)等移动平台上的 Python 也因下载量减少而受益。

此 PEP 中被弃用的模块要么是因为它们的移除是最没有争议的,要么是最有益的。例如,争议最小的有 30 年前的多媒体格式,如 sunau 音频格式,在 80 年代末期被用于 SPARC 和 NeXT 工作站。crypt模块具有根本缺陷,可以在标准库之外更好地解决。

此外,该 PEP 也指定了一些模块为未计划删除的模块。有些模块已经被废弃了几个版本,或者乍一看没有必要。然而,将这些模块保留在标准库中是有好处的,这主要是针对那些不能从 PyPI 安装软件包的环境;包括 ftplib、optparse、 getopt 以及 wave 模块。

CPython 核心开发人员 Gregory P. Smith 在批准 PEP 的讨论组中表示,PEP-594 从 Python 标准库中删除了一系列没有争议的、非常老的、没有维护的或过时的库。Python 指导委员会希望这个 PEP 是个一次性事件,而未来的废弃将以不同的方式处理。

“解决围绕我们如何长期定义 stdlib 的持续讨论并不妨碍这个 PEP。对我们来说,每隔几个版本就对 stdlib 的内容进行一次定期审查似乎是值得的,这样我们就可以避免积累这么多的 dead batteries,但这超出了这个特定 PEP 的范围。”
Python猫技术交流群开放啦!群里既有国内一二线大厂在职员工,也有国内外高校在读学生,既有十多年码龄的编程老鸟,也有中小学刚刚入门的新人,学习氛围良好!想入群的同学,请在公号内回复『交流群』,获取猫哥的微信(谢绝广告党,非诚勿扰!)~


还不过瘾?试试它们




聊聊 Python 的内置电池

在 Google 工作十年后的感悟

聊聊 print 的前世今生

Python 图形界面框架 PyQt5 使用指南!

移除 GIL,可显著提升多线程性能么?

Python 协程与 JavaScript 协程的对比


如果你觉得本文有帮助
请慷慨分享点赞,感谢啦

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存