为什么在切换到 python3 时从 python 内置函数中删除了重载?

Why was reload removed from python builtins in the switch to python3?

我最近从 python 2 切换到 python 3。Python 3 documentation 显示:“ 删除了重新加载 ()。使用 imp.reload( )”但并没有真正说明原因。

This 问题描述了它现在在 python 中是如何完成的 3. 有谁知道为什么它从内置插件中删除并且现在需要 impimportlib 重新加载?在使用交互式提示构建程序时测试程序时,默认情况下在此处重新加载非常方便。显然,我可以通过

之类的操作来取回它
from imp import reload

每次打开交互式提示测试代码,都只是多了一行代码而已。此更改背后的原因是什么?

reload() 作为 Python Regrets Guido 中的一个从内置插件中删除,在 Keynote address at OSCON 2002 (slide 6). See PEP 3100 - Miscellaneous Python 3.0 Plans 中表达了一些变化可以追溯到那次谈话。

根据幻灯片我会说他希望 exec() 被使用;这肯定涵盖了在编辑器中迭代开发一些代码并在交互式解释器中重新测试它的最常见用例。

然而,在讨论时PEP 3121 - Extension Module Initialization and Finalization Guido 很快发现他漏掉了函数:

Yes; I'm not certain whether module reloading continues to be supported in Py3k or not. If not, it should be removed from the PEP, if yes, it should be specified.

我已经缺少内置的 reload(),所以我认为应该保留它 以某种形式围绕。我希望某种形式的重新加载功能会 仍然可用,也许在 imp 模块的某个地方。

所以,简而言之,先删除reload(),然后在遗漏时添加imp.reload()。无论如何,它真的不需要内置,我当然很少使用它。

在Python3.4the function was moved to importlib.reload().