博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
importlib模块与__import__详解
阅读量:2240 次
发布时间:2019-05-09

本文共 975 字,大约阅读时间需要 3 分钟。

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

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

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

一、importlib模块

import importlibmName = '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://www.cnblogs.com/li-li/p/10658471.html

你可能感兴趣的文章
Servlet的生命周期
查看>>
Object中的getClass()返回的是当前运行的类
查看>>
加载驱动程序的方法
查看>>
深入理解java异常处理机制
查看>>
object类的基本方法
查看>>
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>
面试Java程序员需具备的11个技能
查看>>
HashMap 和 HashTable 到底哪不同 ?
查看>>
Java实现简单的递归操作
查看>>
Struts2工作原理和执行流程图
查看>>
在线预览Word,Excel~
查看>>
hibernate延迟加载(get和load的区别)
查看>>
关于文件拷贝效率问题
查看>>