Python中几种导入模块的方式总结


Posted in Python onApril 27, 2017

模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入。常见的方式有如下几种:

1 . import

>>> import sys
>>> sys.path
['', 'C:\\Python34\\Lib\\idlelib', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']

最常见的方式,直接将要导入的模块名称写在后面导入。

2 .from .. import ..

与import类似,只是更明确的要导入的方法或变量,比如:

>>> from sys import path
>>> path
['', 'C:\\Python34\\Lib\\idlelib', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']

但是会造成命名空间的污染,更推荐使用import。

3 . 用名称字符串导入模块

我们可能想这样导入模块:

>>> import "sys"
SyntaxError: invalid syntax

python import接收的是变量而不是字符串,那将”sys”赋值给一个变量呢?

>>> x="sys"
>>> import x
Traceback (most recent call last):
 File "<pyshell#4>", line 1, in <module>
  import x
ImportError: No module named 'x'

这样也不行,这样做的意思是导入名为x的模块而非x代表的sys模块。

我们需要用到exec函数:

>>> x="sys"
>>> exec("import "+ x)
>>> sys.path
['', 'C:\\Python34\\Lib\\idlelib', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']

将导入语句构建成字符串并传递给exec函数执行。

exec缺点是每次执行都要编译,运行多次会影响性能。

更好的方式是使用__import__ 函数。

>>> x="sys"
>>> sys = __import__(x)
>>> sys.path
['', 'C:\\Python34\\Lib\\idlelib', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']

这种方式需要一个变量保存模块对象,以便后续调用。

以上这篇Python中几种导入模块的方式总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现简单的TCP代理服务器
Oct 08 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
编写Python CGI脚本的教程
Jun 29 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
详解supervisor使用教程
Nov 21 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
python内存管理机制原理详解
Aug 12 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python 制作一个gui界面的翻译工具
May 14 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 #Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 #Python
Python中生成Epoch的方法
Apr 26 #Python
python 网络编程详解及简单实例
Apr 25 #Python
python 全文检索引擎详解
Apr 25 #Python
window下eclipse安装python插件教程
Apr 24 #Python
Python处理PDF及生成多层PDF实例代码
Apr 24 #Python
You might like
用PHP开发GUI
2006/10/09 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
用js实现小球的自由移动代码
2013/04/22 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
python中import学习备忘笔记
2017/01/24 Python
django中的setting最佳配置小结
2017/11/21 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Python日志模块logging基本用法分析
2018/08/23 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python实现微信小程序支付功能
2019/07/25 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
美国留学经济担保书
2014/05/20 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL