Python的importlib有什么意义?

时间:2014-12-05 00:58:46

标签: python import python-import

这是"便利包装":https://docs.python.org/2/library/importlib.html只是提供另一种写作方式:

import path.to.my.module

您是否可以使用正常的导入声明做什么?

2 个答案:

答案 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)

它允许您在编码时导入您不知道名称的模块。

例如,当我的应用程序启动时,我会浏览目录结构并在发现它们时加载模块。