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用法(超级详细)相关教程

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

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

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

  2. python中使用什么导入模块-python—模块导入和类

    1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7 In [2]: sys.path Out[2]: ["", "/us ...

  3. python中使用什么导入模块-Python中使用语句导入模块或包的机制研究

    这篇文章讨论了Python的from import *和from import *,它们怎么执行以及为什么使用这种语法(也许)是一个坏主意. 从一个模块导入全部 from import * means ...

  4. python怎么导入模块-Python中如何引入第三方模块

    Python中怎么使用第三方模块? 在Python可以在代码中导入模块,然后就可以使用第三方模块了. import 语句 想使用Python源文件,只需在另一个源文件里执行import语句,语法如下: ...

  5. hog函数的用法 python_Python常见内置函数用法(三)

    本文作者:孙雪丽 文字编辑:周聪聪 技术总编:张学人 重大通知!!!2019年6月22日至24日在河南郑州举行Stata编程技术特别训练营,招生工作已经圆满结束.另外爬虫俱乐部将于2019年7月5日至 ...

  6. import 和from... import的作用,导入模块or导入函数

    import 与 from-import 在 python 用 import 或者 from...import 来导入相应的模块.将整个模块(somemodule)导入,格式为: import som ...

  7. zip函数的用法python_Python zip函数 python zip函数的用法

    python 当中的zip( )函数到底是干嘛的? zip([1,2,3],['a','b','c']) 结果是 [(1, 'a'), (2, 'b'), (3, 'c')] 就是依次取出每一个数组的 ...

  8. extractall用法python_python tarfile模块基本使用

    1.压缩一个文件夹下的所有文件 #coding=utf8 import os import tarfile __author__ = 'Administrator' def main(): cwd = ...

  9. Python运维自动化psutil 模块详解(超级详细)

    psutil 模块 参考官方文档:https://pypi.org/project/psutil/ 一.psutil简介 psutil是一个开源且跨平台(http://code.google.com/ ...

最新文章

  1. python 内置函数__name__的作用
  2. Linux——CentOS安装桌面
  3. Pod详解-生命周期-容器探测
  4. Linux(debian)操作基础(二)之ASPM(活动状态电源管理)
  5. PHP 显示信息到控制台console
  6. OSG仿真案例(10)——osg仿真录屏抓取图像,自定义修改路径,程序控制(而不是按键控制)...
  7. LimeSDR 中文教程 (九)
  8. RTT笔记-分析自动初始化机制
  9. 使用jQuery实现旋转木马效果
  10. 搜题公众号题库对接教程
  11. KF与无迹卡尔曼滤波详解
  12. 区块链是什么通俗解释?
  13. MapReduce论文笔记
  14. OPPO A53线刷刷机包 解账号锁
  15. Trino 本地编译搭建 standalone 模式
  16. 计算机硬件系统中 计算机心脏,办公室常用设备教案——计算机办公设备(计算机硬件及软件系统)02.doc...
  17. 汽车ABS防抱死系统设计
  18. 流利说 Level 5 全文
  19. 安卓从Flickr获取Json数据
  20. 信息学奥赛一本通的一些问题

热门文章

  1. 从三角不等式到Margin Softmax
  2. NLP预训练模型学习全攻略(内附前沿论文解读直播)
  3. 如何使用知识图谱增强信息检索模型?
  4. “人工智能创新大讲堂”全日程发布 | 听大咖畅谈智能社会
  5. Tree-CNN:一招解决深度学习中的「灾难性遗忘」
  6. 巴什博弈例题:NYOJ23;HDU:2149,1847,2897,2188
  7. 《Excel最强功能-数据透视表》 网课笔记
  8. sqlserver evaluation是什么版本_使用SSMS扫描和查找SQL Server数据库的潜在安全漏洞...
  9. db2 参数标识符使用无效_在Python应用程序中使用配置的最佳实践
  10. activiti7可以两个网关连着用吗