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 相关文章推荐
win7上python2.7连接mysql数据库的方法
Jan 14 Python
python处理Excel xlrd的简单使用
Sep 12 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
django中send_mail功能实现详解
Feb 06 Python
python异步存储数据详解
Mar 19 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
python标识符命名规范原理解析
Jan 10 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
Python如何用filter函数筛选数据
Mar 05 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
简单的Python人脸识别系统
Jul 14 Python
Python实现自动玩连连看的脚本分享
Apr 04 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
PHP5 字符串处理函数大全
2010/03/23 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
PHP连接access数据库
2015/03/27 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
javascript 函数式编程
2007/08/16 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
js实现随机数小游戏
2019/06/28 Javascript
vue实现弹幕功能
2019/10/25 Javascript
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
django做form表单的数据验证过程详解
2019/07/26 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
美国滑板店:Tactics
2020/11/08 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
少儿节目主持串词
2014/04/02 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
财务管理制度范本
2015/08/04 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
教你使用pyinstaller打包Python教程
2021/05/27 Python
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技