python import*能导入哪些,python中导入模块中的所有函数需要在import后面指定
对于一个真正的Python程序,我们不可能自己完成所有的工作,通常需要第三方类库的帮助。另外,不可能把整个程序的源代码都写在一个源文件里,需要用模块化的方式来组织项目的源代码。
使用import导入模块的语法,但import其实还有更详细的用法,主要有以下两种方式:
导入模块名1[作为别名1],模块名2[作为别名2],…:导入整个模块。
从模块名称导入成员名称1[作为别名1],成员名称2[作为别名2],…:导入模块中的指定成员。上述两个导入语句之间的差异如下:
第一个import语句导入所有成员(包括变量、函数、类等。)在整个模块中;第二个import语句只导入模块中指定的成员(除非使用格式模块名import *,但通常不建议使用这种语法)。
当使用第一条import语句导入模块中的成员时,必须添加模块名或模块别名前缀;当使用第二个import语句导入模块中的成员时,可以直接使用成员名称或成员别名,而不使用任何前缀。
下面的程序使用最简单的语法导入整个模块来导入指定的模块:
#导入整个sys模块
importsys
#使用sys模块名称作为前缀来访问模块中的成员
Print(sys.argv[0])上面第二行中的代码使得以最简单的方式导入sys模块成为可能。因此,在程序中使用sys模块中的成员时,必须添加模块名作为前缀。
运行上面的程序,可以看到下面的输出结果(sys模块下的argv变量用来获取运行Python程序的命令行参数,其中argv[0]用来获取这个Python程序的程序名)。
Importtest.py可以在导入整个模块时为模块指定一个别名。例如,下面的程序:
#导入整个sys模块并将别名指定为s。
importsysass
#使用模块别名作为前缀来访问模块中的成员
print(s.argv[0])第2行的代码只在导入sys模块时指定了别名S,所以在程序中使用sys模块中的成员时,必须添加模块别名S作为前缀。运行该程序,您可以看到以下输出结果:
Test 2.py还可以使用导入整个模块的语法一次导入多个模块,多个模块之间用逗号分隔。例如,下面的程序:
#导入系统和操作系统模块
导入系统,操作系统
#使用模块名作为前缀来访问模块中的成员
print(sys.argv[0])
#os模块的sep变量代表平台上的路径分隔符
Print(os.sep)上面第二行的代码导入了sys和os两个模块,所以程序应该使用sys和os中的成员,只要分别用sys和os模块的名称作为前缀就可以了。在Windows平台上运行这个程序,可以看到以下输出结果(os模块的sep变量代表平台上的路径分隔符):
importtest3.py
同时,您还可以在导入多个模块时为模块指定别名,例如下面的程序:
#导入sys和os模块,并为sys指定别名S,为os指定别名O。
奥萨索
#使用模块别名作为前缀来访问模块中的成员
print(s.argv[0])
print(o.sep)上面第二行的代码一次导入sys和os两个模块,并分别为它们分配别名S和O。因此,程序可以通过前缀S和o使用sys和os中的成员。在Windows平台上运行程序,可以看到以下输出结果:
import_test4.py
接下来介绍使用 from...import 导入模块内指定成员的用法。下面程序使用 from...import 导入模块成员的最简单语法来导入指定成员:
#导入sys模块的argv成员
第 2 行代码导入了 sys 模块中的 argv 成员,这样即可在程序中直接使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:
fromimporttest.py
使用 from...import 导入模块成员时也可为成员指定别名,例如如下程序:
#导入sys模块的argv成员,并为其指定别名v
第 2 行代码导入了 sys 模块中的 argv 成员,并为该成员指定别名 v,这样即可在程序中通过别名 v 使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:
fromimporttest2.py
在使用 form...import 导入模块成员时也可同时导入多个成员,例如如下程序:
#导入sys模块的argv,winver成员
上面第 2 行代码导入了 sys 模块中的 argv、 winver 成员,这样即可在程序中直接使用 argv、winver 两个成员,无须使用任何前缀。运行该程序,可以看到如下输出结果(sys 的 winver 成员记录了该 Python 的版本号):
fromimporttest3.py
在使用 from...import 同时导入多个模块成员时也可指定别名,同样使用 as 关键字为成员指定别名,例如如下程序:
#导入sys模块的argv,winver成员,并为其指定别名v、wv
上面第 2 行代码导入了 sys 模块中的 argv、winver 成员,并分别为它们指定了别名 v、wv,这样即可在程序中通过 v 和 wv 两个别名使用 argv、winver 成员,无须使用任何前缀。
在使用 from...import 语法时也可一次导入指定模块内的所有成员,例如如下程序:
#导入sys棋块内的所有成员
上面代码一次导入了 sys 模块中的所有成员,这样程序即可通过成员名来使用该模块内的所有成员。该程序的输出结果和前面程序的输出结果完全相同。
需要说明的是,一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数,那么当在程序中执行如下代码时:
foo()
上面调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。
但如果换成如下两种导入方式:
importmodule1
接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:
#使用模块module1的模块名作为前缀调用foo()函数
或者使用 from...import 语句也是可以的:
#导入module1中的foo成员,并指定其别名为foo1
此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰:
foo1()#调用module1中的foo()函数
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。