Python 内建函数 - __import__(name, globals=None, locals=None, fromlist=(), level=0)

函数说明

注意:这是一个高级函数,不像importlib.import_模块,不需要在每天的Python编程中使用。

该函数被import语句调用,为了改变import语句的语义,它可以被替换(通过导入内建模块并指派为builtins.__import__)。但强烈不建议这么做,因为使用import可以更容易达成目的,并且不会引起代码问题。同样不建议直接使用__import__(),赞成使用importlib.import_module()

参数解释

该函数导入模块name,实际上是使用给定的globalslocals变量来决定如何在一个包上下文中解析namefromlist给出对象或子模块名,即应该根据给定名称而导入的模块名。标准的启用中根本不会使用它的locals 参数,并且它的globals只是用来决定import语句的包上下文。

level指定是否使用绝对或相对导入,0(默认)表示只执行绝对导入,level正值表示需要搜索调用模块目录相关的父目录的数量。

name变量是package.module形式时,通常返回顶层包(模块名上询至第一个点),而不是由name命名的模块。然而,当给定非空fromlist参数时,都会返回name命名的模块。

例如:import spam语句所产生的字节码类似于下面的代码:

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

import spam.ham语句产生这种调用:

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

注意:在这里__import__()返回顶层模块的方式,是因为它是一个通过import语句绑定到name的对象。

另一方面,from spam.ham import eggs, sausage as saus语句会产生:

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

这里,__import__()返回spam.ham模块,根据这个模块对象,对导入的名称进行检索并分派给它们各自的名称。

如果你只想通过名称导入一个模块,使用importlib.import_module()

版本变更

version 3.3变更: 不再支持level负值,现已修改默认值为0。

拓展阅读

importlib.import_
import
importlib.import_module()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值