这是"便利包装":https://docs.python.org/2/library/importlib.html只是提供另一种写作方式:
import path.to.my.module
您是否可以使用正常的导入声明做什么?
答案 0 :(得分:4)
在Python 2.7中,importlib
不是 super 有用。事实上,它唯一的功能是import_module
功能,它允许您从字符串名称导入模块:
>>> import importlib
>>> importlib.import_module('sys')
<module 'sys' (built-in)>
>>> importlib.import_module('sys').version
'2.7.8 (default, Jul 2 2014, 19:50:44) [MSC v.1500 32 bit (Intel)]'
>>>
请注意,您可以对内置的__import__
执行相同的操作,但通常首选使用import_module
。
然而,在Python 3.1及更高版本中,importlib
的目的已经扩展。根据{{3}}:
importlib
包的目的是双重的。一个是提供一个 执行import语句(因此,通过扩展, {(1}}函数)在Python源代码中。这提供了__import__()
的实现,可以移植到任何Python解释器。 这也提供了更容易的参考实现 理解比用其他编程语言实现的理解 蟒。二,实现导入的组件在此包中公开, 使用户更容易创建自己的自定义对象(已知 通常作为进口商)参与进口过程。 有关自定义导入程序的详细信息,请参阅documentation。
总结,import
现在允许您访问Python的import语句的内部,构建自定义查找程序,加载程序和导入程序,设置导入挂钩等等。
实际上,从版本3.3开始,importlib
保存了import-statement本身的实现。您可以在PEP 302下的Python 3.3中的新功能页面上阅读此内容。
此外,importlib
将在未来的Python版本中替换与导入相关的旧模块。例如,旧的Using importlib
as the Implementation of Import模块在版本3.4中已弃用,而不是importlib
。
考虑到所有这些,我想可以说importlib
在现代Python中非常重要。 ;)
答案 1 :(得分:0)
它允许您在编码时导入您不知道名称的模块。
例如,当我的应用程序启动时,我会浏览目录结构并在发现它们时加载模块。