Trey Hunner:重构 Python 的 sys 模块”
Python 的 sys 模块被描述为一个存放各种杂项的“杂物抽屉”。本文探讨了如果今天从零开始设计 sys 模块,它可能呈现何种面貌。目前,sys 拥有超过一百个属性,其中许多是函数,导致命名空间拥挤。为解决这一问题,作者提议将 sys 重组为九个子模块。这些提议的子模块包括:sys.cli 用于命令行参数,sys.imports 用于模块相关函数,sys.io 用于标准输入/输出,sys.repl 用于交互式提示设置,sys.interpreter 用于系统和安装详情,sys.memory 用于内存管理工具,sys.exceptions 用于异常处理,sys.profile 用于性能分析和自省,以及 sys.runtime 用于解释器行为。这些提议子模块中的某些属性与现有标准库模块相似,暗示了进一步重组的可能性。本文承认实际实施此类重组面临重大挑战。主要障碍在于过渡期以及维护向后兼容性,因为现有代码依赖于 sys 当前的扁平命名空间。文章讨论了一种涉及模块级属性处理的技术方案,展示了如何保留旧的扁平命名空间以维持兼容性。然而,作者怀疑这种重组永远不会发生,原因在于现有代码量巨大,且 Python 社区除非绝对必要,否则一般不愿进行此类基础性变更。对开发者的主要启示是:子模块可作为大型“工具”模块的有用组织手段。