importlib模块与__import__详解

importlib模块与__import__都可以通过过字符串来导入另外一个模块,但在用法上和本质上都有很大的不同。

通过下面示例说明,有如下一个工程目录:

name = 'test'


def getName():
    print(name)
lib/test.py
name = 'demo'


def getName():
    print(name)
demo.py
一、importlib模块
import importlib


mName = 'lib.test'
module = importlib.import_module(mName)
module.getName()
testimportlib.py

importlib是python的一个标准库,通过导入importlib,调用import_module()方法,传入用户想要获取的模块对应的路径字符串,即可获取一个模块module,module可以调用这个test模块下的所有属性和方法。

运行结果如下:

二、__import__

__import__是python的一个内置方法,直接调用__import__()即可获取一个模块。

mName = 'demo'


module = __import__(mName)
module.getName()
testimport.py

运行结果如下:

此时调用的是同目录下的demo模块,可顺利地获取这个模块,那么当不再同一个目录下呢?

mName = 'lib.test'


module = __import__(mName)
module.getName()
testimport.py修改为

运行结果如下:

出错提示表示,当前的模块'lib'没有getName()这个方法,因此没有正确获取到test模块。

mName = 'lib.test'


module = __import__(mName, fromlist=['test'])
module.getName()
继续修改testimport.py为

运行结果如下:

可见当加上__import__方法加上参数fromlist即可正确获取。

有关importlib模块其他说明详见官方文档:https://docs.python.org/3.7/library/importlib.html?highlight=importlib#module-importlib.abc

转载于:https://www.cnblogs.com/li-li/p/10658471.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值