码迷,mamicode.com
首页 > 其他好文 > 详细

importlib模块与__import__详解

时间:2019-04-05 14:08:27      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:port   字符串   event   src   tar   pre   ima   没有   print   

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

importlib模块与__import__详解

标签:port   字符串   event   src   tar   pre   ima   没有   print   

原文地址:https://www.cnblogs.com/li-li/p/10658471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!