在python进行编程时,有些功能可以借助python现在有的标准库或者其他人提供的第三方库,比如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。
1:import模块1[as 别名1],模块名2[as别名2]....:使用这种语法格式的import语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员是,需要该模块名(或别名)作为前缀,否则python解释器会报错。
2:form模块名import成员名1[as别名1],成员名2[as 别名2]....:使用这种语法格式的import语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。
括号()括起来的部分可以使用,也可以省略
其中,第二种 import 语句也可以导入指定模块中的所有成员,即使用 form 模块名 import *,但此方式不推荐使用,具体原因后续会做详细说明。
1、import模块名as别名:
程序使用导入整个模块的最简单语法来导入指定模块:
第 2 行代码使用最简单的方式导入了 sys 模块,因此在程序中使用 sys 模块内的成员时,必须添加模块名作为前缀。输出后得到的是这个文件的路径
也可以一次导入多个模块,多个模块之间用逗号隔开。
第一行代码一次导入了sys跟os两个模块,因此程序要使用sys、os两个模块内的成员,只要分别使用sys、os模块作为前缀即可。输出结果中的os模块和sep模块代表平台上的路径分隔符:
在导入多个模块的同时,也可以为模块指定别名,方法如下:
一次导入了sys跟os两个模块,并分别为它们指定别名s跟o,因此过程可以通过s,o两个前缀来使用,sys、os 两个模块内的成员
2、form模块名import成员名as别名:
使用from加import简单语法导入指定成员:
导入了 sys 模块中的 argv 成员,这样即可在程序中直接使用 argv 成员,无须使用任何前缀。运行该程序
form 加 import 导入模块成员时,支持一次导入多个成员
导入了 sys 模块中的 argv、winver 成员,并分别为它们指定了别名 v、wv,这样即可在程序中通过 v 和 wv 两个别名使用 argv、winver 成员,无须使用任何前缀。
3、不推荐使用 from import 导入模块所有成员:
在使用 from...import 语法时,可以一次导入指定模块内的所有成员(此方式不推荐)
需要说明的是,一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 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()函数