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

共 2180字,需浏览 5分钟

 ·

2022-04-20 19:57

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包


本文由 Python 猫 整理


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 的范围。”



  1. PyCharm为什么这么牛?

  2. 恭喜!您已关注公众号满1年, 诚邀您免费加入网易数据分析培训营!


浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报