Python导入模块,Python import用法(超级详细)

使用 Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。

前面章节中,已经看到使用 import 导入模块的语法,但实际上 import 还有更多详细的用法,主要有以下两种:

import 模块名1 [as 别名1], 模块名2 [as 别名2],…:使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…: 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。

注意,用 [] 括起来的部分,可以使用,也可以省略。

其中,第二种 import 语句也可以导入指定模块中的所有成员,即使用 form 模块名 import *,但此方式不推荐使用,具体原因本节后续会做详细说明。

import 模块名 as 别名

下面程序使用导入整个模块的最简单语法来导入指定模块:

# 导入sys整个模块
import sys
# 使用sys模块名作为前缀来访问模块中的成员
print(sys.argv[0])

上面第 2 行代码使用最简单的方式导入了 sys 模块,因此在程序中使用 sys 模块内的成员时,必须添加模块名作为前缀。

运行上面程序,可以看到如下输出结果(sys 模块下的 argv 变量用于获取运行 Python 程序的命令行参数,其中 argv[0] 用于获取当前 Python 程序的存储路径):

C:\Users\mengma\Desktop\hello.py

导入整个模块时,也可以为模块指定别名。例如如下程序:

# 导入sys整个模块,并指定别名为s
import sys as s
# 使用s模块别名作为前缀来访问模块中的成员
print(s.argv[0])

第 2 行代码在导入 sys 模块时才指定了别名 s,因此在程序中使用 sys 模块内的成员时,必须添加模块别名 s 作为前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py

也可以一次导入多个模块,多个模块之间用逗号隔开。例如如下程序:

# 导入sys、os两个模块
import sys,os
# 使用模块名作为前缀来访问模块中的成员
print(sys.argv[0])
# os模块的sep变量代表平台上的路径分隔符
print(os.sep)

上面第 2 行代码一次导入了 sys 和 os 两个模块,因此程序要使用 sys、os 两个模块内的成员,只要分别使用 sys、os 模块名作为前缀即可。在 Windows 平台上运行该程序,可以看到如下输出结果(os 模块的 sep 变量代表平台上的路径分隔符):

C:\Users\mengma\Desktop\hello.py
\

在导入多个模块的同时,也可以为模块指定别名,例如如下程序:

# 导入sys、os两个模块,并为sys指定别名s,为os指定别名o
import sys as s,os as o
# 使用模块别名作为前缀来访问模块中的成员
print(s.argv[0])
print(o.sep)

上面第 2 行代码一次导入了sys 和 os 两个模块,并分别为它们指定别名为 s、o,因此程序可以通过 s、o 两个前缀来使用 sys、os 两个模块内的成员。在 Windows 平台上运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py
\

from 模块名 import 成员名 as 别名

下面程序使用了 from…import 最简单的语法来导入指定成员:

# 导入sys模块的argv成员
from sys import argv
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])

第 2 行代码导入了 sys 模块中的 argv 成员,这样即可在程序中直接使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py

导入模块成员时,也可以为成员指定别名,例如如下程序:

# 导入sys模块的argv成员,并为其指定别名v
from sys import argv as v
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(v[0])

第 2 行代码导入了 sys 模块中的 argv 成员,并为该成员指定别名 v,这样即可在程序中通过别名 v 使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py

form…import 导入模块成员时,支持一次导入多个成员,例如如下程序:

# 导入sys模块的argv,winver成员
from sys import argv, winver
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
print(winver)

上面第 2 行代码导入了 sys 模块中的 argv、 winver 成员,这样即可在程序中直接使用 argv、winver 两个成员,无须使用任何前缀。运行该程序,可以看到如下输出结果(sys 的 winver 成员记录了该 Python 的版本号):

C:\Users\mengma\Desktop\hello.py
3.6

一次导入多个模块成员时,也可指定别名,同样使用 as 关键字为成员指定别名,例如如下程序:

# 导入sys模块的argv,winver成员,并为其指定别名v、wv
from sys import argv as v, winver as wv
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(v[0])
print(wv)

上面第 2 行代码导入了 sys 模块中的 argv、winver 成员,并分别为它们指定了别名 v、wv,这样即可在程序中通过 v 和 wv 两个别名使用 argv、winver 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py
3.6

不推荐使用 from import 导入模块所有成员

在使用 from…import 语法时,可以一次导入指定模块内的所有成员(此方式不推荐),例如如下程序:

#导入sys 棋块内的所有成员
from sys import *
#使用导入成员的语法,直接使用成员的别名访问
print(argv[0])
print(winver)

上面代码一次导入了 sys 模块中的所有成员,这样程序即可通过成员名来使用该模块内的所有成员。该程序的输出结果和前面程序的输出结果完全相同。

需要说明的是,一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数,那么当在程序中执行如下代码时:

foo()

上面调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。

但如果换成如下两种导入方式:

import module1
import module2 as m2

接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:

#使用模块module1 的模块名作为前缀调用foo()函数
module1.foo()
#使用module2 的模块别名作为前缀调用foo()函数
m2.foo()
或者使用 from...import 语句也是可以的:
#导入module1 中的foo 成员,并指定其别名为foo1
from module1 import foo as fool
#导入module2 中的foo 成员,并指定其别名为foo2
from module2 import foo as foo2

此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰:

foo1() #调用module1 中的foo()函数
foo2() #调用module2 中的foo()函数

Python导入模块,Python import用法(超级详细)相关推荐

  1. python中导入模块使用哪个关键字_关于python导入模块的关键字介绍

    关于python导入模块的关键字介绍 发布时间:2020-04-17 10:13:26 来源:亿速云 阅读:101 作者:小新 今天小编给大家分享的是关于python导入模块的关键字介绍,很多人都不太 ...

  2. python导入模块_Python导入

    python导入模块 Python import statement is used to import modules that we want to use in our program. Pyt ...

  3. python导入模块的三种方法,例子: import numpy和from numpy import * (import matplotlib 和 from matplotlib import *)

    python导入模块有如下几种写法:以matplotlib为例 (跟numpy是一样的) 1,import matplotlib #整个导入matplotlib 2 , from matplotlib ...

  4. python导入模块的变量_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 for ...

  5. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  6. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  7. 在python中、使用( )语句导入模块_Python import导入模块

    python中的import语句是用来导入模块的,在python模块库中有着大量的模块可供使用,要想使用这些文件需要用import语句把指定模块导入到当前程序中. import语句作用 import语 ...

  8. python导入模块语句_python 模块导入详解

    本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import...import... as ...from ... im ...

  9. 【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named ‘模块名‘

    Python 导入模块的三种方式ModuleNotFoundError: No module named '模块名' 问题 一.Python解释器查找模块文件的过程. 二.解决方法 记录一下 大家可以 ...

  10. python导入模块有同名_Python:导入与函数同名的模块

    背景:第一次在SE上提问.我在 Python方面还很陌生,而且在编程方面也不是很有经验.我已经四处寻找,但我没有找到这个问题的答案,我非常感谢你的帮助. 我的问题是:如何导入与函数同名的模块? 具体来 ...

最新文章

  1. 2011年3月华章新书书讯:ASP.NET本质论、Erlang编程指南、SNS网站构建
  2. 深入理解傅立叶变换(详细)
  3. 三招看穿ERP软件是否可行
  4. 详解Scala与Java的互动
  5. winform在表格中输入一个完整的时间字段_【ArcGIS小技巧视频教程】(5):在ArcGIS中挂接其他数据...
  6. JLabel标签文字换行
  7. 设计模式六大原则(5)——迪米特原则
  8. so文件动态加载注意事项
  9. 基于柯西矩阵的Erasure Code技术详解
  10. 便捷的收集数据工具—Sniffer嗅探器
  11. 码农到架构师视频学习笔记
  12. 使用单文档视图结构把Word嵌入到VC程序中(2)
  13. 2020.7.24 T3终章-剑之魂(jz暑假训练day9)
  14. 备了安的网站换服务器,tipask网站更换服务器后 问答系统重新安装注意要点 - 小俊学习网...
  15. Android App的设计架构:MVC,MVP,MVVM与架构经验谈
  16. 缺陷检测相关论文阅读总结(记录自己读过的论文主要内容/Ideas)
  17. 【经验】经验总结-经验教训
  18. 笔记本电脑移动办公平台网络解决方案
  19. mooc幕课零基础学Java语言(翁恺)if-else语句比较三个数, 输出最大值
  20. 分享自己做的一个词典小软件

热门文章

  1. MicroSip客户端编译、运行
  2. 点云配准1:配准基础及icp算法
  3. Matlab 四阶龙格库塔法求解二元常微分方程组
  4. scipy库中的leastsq函数
  5. PCB Dk、Df和介质损耗
  6. 阈值分割--大津阈值法(OSTU)
  7. 软件设计师教程第5版和第4版内容对比
  8. 黑马程序员_毕向东_Java基础视频教程学习笔记(二)
  9. 中兴设备交换机路由器清除清理指定接口计数的统计信息命令
  10. 惠普无线打印机服务器进不去,连接您的HP无线打印机 | 无线打印中心 | 惠普中国...