Python动态导入模块的方法实例分析


Posted in Python onJune 28, 2018

本文实例讲述了Python动态导入模块的方法。分享给大家供大家参考,具体如下:

一、正常导入模块

正常模块导入方式: import module(模块路径)

同时导入多个模块:

import os,sys,socket

二、动态导入模块

动态导入模块允许我们通过字符串形式来导入模块

2.1 __import__函数,接受一个字符串参数

import os, sys
my_sys = __import__('sys')
my_os = __import__('os')
print(sys.version)
print(my_sys.version)
print('-------------')
print(os.getcwd())
print(my_os.getcwd())

输出:

3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
-------------
G:\python\untitled\study8
G:\python\untitled\study8

我们将sys, os 模块名当中参数传入__import__函数中,可以看出my_sys 和my_os 其实就是相当于 os , sys 模块了。

2.2 __import__函数导入自己的模块

我们在lib包中有一个test.py模块,我们如何通过__import__函数来导入该模块呢?

# test.py内容
class Person(object):
  def __init__(self):
    self.name = 'bigberg'
# 导入模块
mod = __import__('lib.test') # 相当于获取了 lib 的路径
print(mod)
obj = mod.test.Person()
print(obj.name)

输出:

<module 'lib' from 'G:\\python\\untitled\\study8\\lib\\__init__.py'>
bigberg

2.3 动态导入模块列表

moduleNames = ['sys', 'os', 'socket']
print(type(map))
# 在python3 map函数不在是内置函数,而是class,返回的结果是 可迭代对象
print(isinstance(map(__import__, moduleNames), Iterator))
modules = list(map(__import__, moduleNames))
print(modules[0].version)

输出:

<class 'type'>
True
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]

现在的modules[0] 就相当于 sys 模块了。

2.4 importlib 模块

动态导入模块时,python官方建议使用importlib模块,我们同样导入lib/test.py

import importlib
mod = importlib.import_module('lib.test') # mod相当于 test.py本身了,于上例不同
print(mod)
obj = mod.Person()
print(obj.name)

输出:

<module 'lib.test' from 'G:\\python\\untitled\\study8\\lib\\test.py'>
bigberg

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python使用filetype精确判断文件类型
Jul 02 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
python3射线法判断点是否在多边形内
Jun 28 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
pytorch实现线性拟合方式
Jan 15 Python
详解pycharm配置python解释器的问题
Oct 15 Python
举例讲解Python装饰器
Dec 24 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
一些让Python代码简洁的实用技巧总结
Aug 23 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
Jun 28 #Python
python实现将读入的多维list转为一维list的方法
Jun 28 #Python
numpy matrix和array的乘和加实例
Jun 28 #Python
python 按不同维度求和,最值,均值的实例
Jun 28 #Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 #Python
python 列表降维的实例讲解
Jun 28 #Python
基于Python中求和函数sum的用法详解
Jun 28 #Python
You might like
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
理解Javascript_03_javascript全局观
2010/10/11 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
python并发编程之线程实例解析
2017/12/27 Python
Python基于百度云文字识别API
2018/12/13 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
毕业生的自我评价范文
2013/12/31 职场文书
《在家里》教后反思
2014/03/01 职场文书
名人演讲稿范文
2014/09/16 职场文书
党员个人总结范文
2015/02/14 职场文书
七一活动主持词
2015/06/29 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
导游词之临安白水涧
2019/11/05 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
python自动化测试之Selenium详解
2022/03/13 Python