为什么在切换到python3时从python builtins中重新加载了重新加载?

hor*_*rta 8 python reload built-in python-2.7 python-3.x

我最近从python 2切换到python 3. Python 3文档读取:" Removed reload().使用imp.reload() "它并没有真正说明为什么.

这个问题描述了它现在如何在python 3中完成.有没有人知道为什么它已从内置函数中删除,现在需要impimportlib重新加载?在使用交互式提示构建程序时测试程序时,默认情况下重新加载程序非常方便.显然,我可以通过做类似的事情来解决这个问题

from imp import reload
Run Code Online (Sandbox Code Playgroud)

每次打开交互式提示测试代码时,它只是另一行代码.这种变化背后的原因是什么?

Mar*_*ers 6

reload()作为Python Regrets Guido 在OSCON 2002(幻灯片6)的主题演讲中表达的内容之一被从内置插件中移除.请参阅PEP 3100 - 杂项Python 3.0计划,其中列出了几个跟踪其起源的更改.

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

但是,在讨论PEP 3121 - 扩展模块初始化和终结时, Guido很快发现他错过了这个功能:

是; 我不确定Py3k是否继续支持模块重新加载.如果没有,应将其从PEP中删除,如果是,则应指定.

我已经错过了内置的reload(),所以我认为应该以某种形式保留它.我希望某种形式的重载功能仍然可用,也许在imp模块的某个地方.

所以,简而言之,reload()首先被删除,然后当它被错过时,imp.reload()被添加.它无论如何都不需要内置,我当然很少使用它.

在Python 3.4中,函数被移动importlib.reload().

  • 请注意`reload`是[最近移动](http://bugs.python.org/issue18193)到`importlib`,所以如果你正在编写目标当前版本的新代码,你应该直接使用`importlib.reload`来避免当函数最终被正式弃用并稍后删除时的后续问题. (2认同)