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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python获取邮件地址的方法
Jul 10 Python
简单理解Python中的装饰器
Jul 31 Python
Python中字典的基础知识归纳小结
Aug 19 Python
使用Python写CUDA程序的方法
Mar 27 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
python保存文件方法小结
Jul 27 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
python实现电子产品商店
Feb 26 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
如何在vscode中安装python库的方法步骤
Jan 06 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)
2013/06/21 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
实例讲解React 组件
2020/07/07 Javascript
Python 通过URL打开图片实例详解
2017/06/01 Python
python删除服务器文件代码示例
2018/02/09 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Django框架 querySet功能解析
2019/09/04 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
傲慢与偏见读书笔记
2015/06/29 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
创业计划之特色精品店
2019/08/12 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫