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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
通过源码分析Python中的切片赋值
May 08 Python
tornado 多进程模式解析
Jan 15 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
Python类的继承用法示例
Jan 31 Python
python3多线程知识点总结
Sep 26 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
解决Django no such table: django_session的问题
Apr 07 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 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使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
利用Python实现颜色色值转换的小工具
2016/10/27 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
车辆安全检查制度
2014/01/12 职场文书
女子职高个人自荐书
2014/02/01 职场文书
六查六看自查材料
2014/02/17 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
员工年终自我评价
2014/09/14 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
暖春观后感
2015/06/08 职场文书
如何用python插入独创性声明
2021/03/31 Python