来自https://docs.python.org/3/library/importlib.html
importlib
包的目的是双重的。一个是提供
import
声明的实施(因此,通过扩展, Python源代码中的 the__import__()
function )。这提供了一个 可以移植到任何Python解释器的import
的实现。 这也提供了更容易理解的实现 而不是用Python之外的编程语言实现的。二,实现
import
的组件在此包中公开, 使用户更容易创建自己的自定义对象(已知 通常作为进口商)参与进口过程。
这是否意味着import
语句和builtin.__import__()
函数默认是基于importlib.__import()
函数实现的?
但是https://stackoverflow.com/a/44655619/156458意味着
默认情况下,builtins.__import__
未基于importlib.__import__
实施。{/ 1}
https://docs.python.org/3/library/functions.html#import说
buitlins.__import__
语句调用import
函数。因此,如果builtins.__import__
默认情况下未基于importlib.__import__
实施,则import
语句默认情况下不会基于importlib.__import__
实现。
答案 0 :(得分:2)
不,实际的导入代码是Python代码的端口。请参阅implementation of the PyImport_ImportModuleLevelObject()
function(builtins.__import__
基本上是一个简单的Python-> C包装器),其中包含注释:
/* The below code is importlib.__import__() & _gcd_import(), ported to C
for added performance. */
因此,对于性能原因,import
使用C优化代码,而不是importlib
的Python实现。这两个实现保持同步,但是,如果您要创建一个拉取请求,那么Python核心开发人员会在接受您的更改之前要求您更新另一个。
您对重点的使用使我相信您误读了文档; importlib
不是导入语句的实现。这是在Python源代码中执行import语句 ,与在C代码中