当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python import__用法及代码示例


用法:

__import__(name, globals=None, locals=None, fromlist=(), level=0)

注意

importlib.import_module() 不同,这是日常 Python 编程中不需要的高级函数。

该函数由import陈述。它可以被替换(通过导入builtins模块并分配给builtins.__import__) 为了改变语义import声明,但这样做是强烈不鼓励,因为使用导入钩子通常更简单(请参阅PEP 302) 来实现相同的目标,并且不会导致假定默认导入实现正在使用的代码出现问题。直接使用import__也不鼓励赞成importlib.import_module().

该函数导入模块 name ,可能使用给定的 globalslocals 来确定如何解释包上下文中的名称。 fromlist 给出了应该从 name 给出的模块导入的对象或子模块的名称。标准实现根本不使用其locals 参数,而仅使用其globals 来确定import 语句的包上下文。

level指定是使用绝对导入还是相对导入。0(默认)意味着只执行绝对导入。正值level表示相对于调用模块的目录要搜索的父目录的数量import__(参考PEP 328详情)。

name 变量的形式为 package.module 时,通常会返回顶级包(直到第一个点的名称), notname 命名的模块。但是,当给定一个非空的fromlist 参数时,将返回以name 命名的模块。

例如,语句 import spam 生成的字节码类似于以下代码:

spam = __import__('spam', globals(), locals(), [], 0)

语句 import spam.ham 导致此调用:

spam = __import__('spam.ham', globals(), locals(), [], 0)

请注意 __import__() 如何在此处返回顶级模块,因为这是由 import 语句绑定到名称的对象。

另一方面,语句from spam.ham import eggs, sausage as saus 导致

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage

在这里,spam.ham 模块是从 __import__() 返回的。从此对象中检索要导入的名称并将其分配给它们各自的名称。

如果您只想按名称导入模块(可能在包中),请使用 importlib.import_module()

在 3.3 版中更改:负值level不再支持(这也将默认值更改为 0)。

在 3.9 版中更改:当命令行选项-E或者-I正在使用,环境变量PYTHONCASEOK现在被忽略了。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 import__。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。