python import_Python Importlib模块与__import__详解

本文详细比较了Python中Importlib模块与内置函数__import__在导入模块上的区别,通过实例展示Importlib动态加载模块和__import__在不同路径情况下的使用,强调了Importlib的灵活性及fromlist参数的重要性。
摘要由CSDN通过智能技术生成

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

以一个例子为证:

以下为我的工程目录结构:

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNDU3OTQ0LzIwMTkwNi8xNDU3OTQ0LTIwMTkwNjE4MDgyMDQ1MDE5LTE2MDUzMzU0ODAucG5n.jpg

lib/test.py:

name = "Jack"

def getName():

print(name)

return name

demo.py:

name = "Amy"

def getName():

print(name)

return name

Importlib模块的例子:

testImportlib.py:

import importlib

mName = "lib.test"

module = importlib.import_module(mName)

module.getName()

Importlib是python的一个库,通过导入importlib,调用import_module()方法,传入用户想要获取的模块对应的路径字符串,即可获取一个,模块module,module可以调用这个test模块下的所有属性和方法。

运行截图:

L3Byb3h5L2h0dHBzL2ltZzIwMjAuY25ibG9ncy5jb20vYmxvZy8xNDU3OTQ0LzIwMjAwNS8xNDU3OTQ0LTIwMjAwNTI4MTE1NzAzNDM2LTEwNjExNjAyMzUucG5n.jpg

__import__的例子:

__import__是python的一个内置方法,直接调用__import__()即可获取一个模块.

testImport.py:

mName = "demo"

module = __import__(mName)

module.getName()

此时调用的是相同目录下的demo模块,可顺利地获取这个模块,那么当不再同一个目录下呢?

修改testImport.py:

mName = "lib.test"

module = __import__(mName)

module.getName()

此时的运行结果为:

L3Byb3h5L2h0dHBzL2ltZzIwMjAuY25ibG9ncy5jb20vYmxvZy8xNDU3OTQ0LzIwMjAwNS8xNDU3OTQ0LTIwMjAwNTI4MTE1NzIxMjkwLTQyNzI3Mzc2Ny5wbmc=.jpg

出错提示为,当前的模块'lib'没有getName()这个方法,因此没有正确获取到test模块。

继续修改此文件:

mName = "lib.test"

module = __import__(mName,fromlist = ('test',))

module.getName()

运行结果为:

L3Byb3h5L2h0dHBzL2ltZzIwMjAuY25ibG9ncy5jb20vYmxvZy8xNDU3OTQ0LzIwMjAwNS8xNDU3OTQ0LTIwMjAwNTI4MTE1NzM2MTAyLTE2MjY5OTgxNjEucG5n.jpg

当加上fromlist属性即可正确获取。

importlib模块与__import__详解

importlib模块与__import__都可以通过过字符串来导入另外一个模块,但在用法上和本质上都有很大的不同. 通过下面示例说明,有如下一个工程目录: name = 'test' def get ...

python OptParse模块的用法详解

OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成 ...

Python os模块常用函数详解

当前使用平台: os.name #返回当前使用平台的代表字符,Windows用'nt'表示,Linux用'posix'表示 当前路径和文件 os.getcwd() #返回当前工作目录 os.listd ...

Python模块调用方式详解

Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...

python中argparse模块用法实例详解

python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

Python中random模块生成随机数详解

Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...

Python Deque 模块使用详解,python中yield的用法详解

Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_3 ...

Python包模块化调用方式详解

Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

随机推荐

MySQL 第九天(核心优化三)

一.昨天内容回顾 索引设计依据 与数据表有关系的sql语句都统计出来 where order by or等等条件的字段适当做索引 原则: 频率高的sql语句 执行时间长的sql语句 业务逻辑重要的sq ...

Handlebars模板库浅析

Handlebars模板库简单介绍 Handlebars是JavaScript一个语义模板库,通过对view(模板)和data(ajax请求的数据,一般是json)的分离来快速构建Web模板.它采用& ...

javascript 停止事件冒泡以及阻止默认事件冒泡

停止事件冒泡 function stopBubble(e) { // 如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) { // ...

到底该如何入门Keras、Theano呢?(浅谈)

目前刚刚开始学习Theano,可以说是一头雾水,后来发现Keras是对Theano进行了包装,直接使用Keras可以减少很多细节程序的书写,它是模块儿化的,使用比较方便,但更为细节的内容,还没有理解, ...

Android ImageButton Example 图片按钮

Android ImageButton Example 图片按钮 使用“android.widget.ImageButton” 展现一个具有背景图片的按钮 本教程将展现一个具有名字为 c.png背景图 ...

K:java中properties文件的读写

Properties类与.properties文件:   Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集的类,不过Properties有特殊 ...

004_wireshark专题

一.常用的wireshark搜索语法 (1) http.request.uri contains "admin/activities" #搜索URL包含"admin/ac ...

Redis简介与安装

目录 Redis概述与安装使用 Redis概述与安装使用 Author:SimpleWu GitHub-redis Redis简介 Redis英语全称:( REmote DIctionary Serv ...

c#异常重试机制

有时候我们碰到程序异常了,想让程序继续重新执行,进行重试,这时候就需要有一个合适的方法来进行操作: 自己写代码控制太麻烦了,也容易出错.这时候当然是站在巨人的肩膀上, https://github.c ...

转载-js如何设置网页横屏和竖屏切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值