龙空技术网

16. 关于Python重命名计划

ReadingPython 1380

前言:

而今朋友们对“pythonmodelviewfilerenamed”可能比较讲究,兄弟们都需要剖析一些“pythonmodelviewfilerenamed”的相关内容。那么小编在网上收集了一些有关“pythonmodelviewfilerenamed””的相关文章,希望各位老铁们能喜欢,各位老铁们一起来学习一下吧!

本系列文章译自Python之父 Guido van Rossum 的系列博客“The History of Python”。这个博客系列对我们理解Python及其演变很有帮助,经Guido同意,在这里翻译推荐给大家,希望大家喜欢,也请大家多多指教!

起初,我一直把 Python 当做一门独立语言进行开发,只是偶尔要引入第三方库而已,因此,源代码中的全局变量命名很随意(从 C语言链接器的角度看),比如说有“object”、“getlistitem”、“INCREF”等等。

但随着 Python 越来越受欢迎,大家开始希望有一个“嵌入式”版本的 Python,即把 Python 作为第三方库链接进其他应用中——正如在 Emacs 中使用 Lisp 解析器一样。

麻烦的是,因为 Python 的全局变量往往与被嵌入的应用冲突,要提供一个嵌入式版本的 Python 并不容易——尤其是“object”这个名称,似乎最受大家欢迎。

因此,我们确定了一个命名规则,使 Python 的所有全局变量都以“Py”、“_Py”(用于必须作为全局变量的内部名称)或“PY”(用于宏)开头。

为向后兼容(因为已经有很多第三方扩张模块了),并方便核心开发者进行切换(他们对原有命名已经非常熟悉了),我们提供了两种模式:

在模式一中,链接器使用原有命名,而源代码使用新命名,并通过一系列 C语言宏进行转换;

而在模式二中,链接器使用新命名,并通过 C语言宏将原命名转换为新命名,以支持一些还没来得及完成切换的扩展模块。

不论哪种模式,都可以正常运作。

为回顾这段历史,我又查看了我们的版本提交日志。在 1995年 1月 12日,一个编号 r4583 的提交记录中,所有头文件都开始使用新命名,意味着重命名计划中的模式二正式启动。而在 1996年 12月,依然有对 .c 文件的重命名记录。Python 的重命名计划应该就发生在这段时期,当时的提交记录常常提到“重命名计划”(the "Grand Renaming”)。到 2000年 5月,在 Python 1.6 版本中,支持向后兼容的宏指令终于彻底移除,当时的提交记录编号是 r15313。

必须感谢 Barry Warsaw 和 Roger Masse,他们也参与了这项默默无闻的工作,一个一个又一个文件地进行重命名(虽然是在脚本的帮助下)。同时,他们也承担了另一项极为枯燥的任务——为大量标准库编写单元测试。

维基百科上有一条关于早期重命名计划的记录,是关于 USENET 团队的,我似乎隐约有些印象,当时把这项工作称作“重命名计划”的时候就是参考的这个事件。后来, Sphinx 也用了这个名字——这是一个生成 Python 文档的模块。Zope 似乎也有过一次重命名计划。而最近,在 Py3k 将 PyString 重命名为 PyBytes 的讨论中也使用了这个词(当然,相对来说,这只是一次小小的命名改变)。

对社区来说,重命名计划往往是一个极为痛苦的过程,因为开发者必须告别熟悉的名称,各种文档也要重写,重命名之前写的升级补丁如何整合更是复杂(特别是如果还有一些没有进行重命名的分支,就更麻烦了)。

公众号:ReadingPython

标签: #pythonmodelviewfilerenamed