Python的importlib有什么意义?

cap*_*let 4 python import python-import

这是“便利包装”吗:https : //docs.python.org/2/library/importlib.html只是提供了另一种书写方式:

import path.to.my.module
Run Code Online (Sandbox Code Playgroud)

有什么是您无法使用常规import语句执行的操作吗?

iCo*_*dez 5

在Python 2.7 importlib中不是超级有用。实际上,它的唯一功能是import_modulefunction,它使您能够从字符串名称导入模块:

>>> 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)]'
>>>
Run Code Online (Sandbox Code Playgroud)

请注意,您可以对__import__内置程序执行相同的操作,但import_module通常首选使用。

但是,在Python 3.1及更高版本中,的目的importlib已得到扩展。根据文档

importlib包装的目的是双重的。一种是__import__()在Python源代码中提供import语句的实现(因此,通过扩展,提供 函数)。这提供了一个import可移植到任何Python解释器的实现。这也提供了一种参考实现,该参考实现比以Python以外的其他编程语言实现的参考实现更容易理解。

第二,实现导入的组件在此包中公开,从而使用户更容易创建自己的自定义对象(通常称为导入器)以参与导入过程。有关自定义进口商的详细信息,请参见PEP 302

概括起来,importlib现在允许您访问Python的导入语句的内部,构建自定义查找器,加载器和导入器,设置导入挂钩等。

实际上,从版本3.3开始,importlib保留导入语句本身的实现。您可以在什么新的Python 3.3页下阅读本使用importlib的进口实施

此外,importlib还将替换与将来的Python版本中的导入相关的旧模块。例如,imp在3.4版中不推荐使用旧模块,而推荐使用importlib

考虑到所有这些,我想可以肯定地说这importlib在现代Python中非常重要。;)


Mar*_*arc 5

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

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