模块化编程
导入模块的语法
import语法主要有2种:
import 模块名1 [as 别名1], 模块名2 [as 别名2]....导入整个模块 from 模块名 import 成员名1 [as 别名1],成员名2 [ as 别名2] ....导入模块中指定成员
主要区别有:
第一种import语句导入整个模块内的所有成员(包括变量、函数、类等)
第二种import语句只导入模块内的指定成员(除非使用form 模块名 imprt *,但通常不推荐使用这种语法)
使用第一种import语句导入模块中的成员时,必须添加模块名或模块别名前缀;
当使用第二种import语句导入模块中的成员时,无须使用任何前缀,直接使用成员名或成员别名即可。
# 导入sys整个模块 import sys # 使用sys模块名作为前缀来访问模块中的成员 print(sys.argv[0])
上面使用import sys 简单的导入了sys模块,在程序使用过程中,必须添加模块名作为前缀 sys.argv[0]
导入整个模块时,可以为模块指定别名
# 导入sys整个模块 指定别名 import sys as s # 使用s模块别名作为前缀来访问模块的成员 print(s.argv[0])
使用导入整个模块的语法也可以一次导入多个模块,多个模块之间用逗号隔开。
# 导入sys os两个模块 并为sys指定别名s 为os 指定别名o import sys as s,os as o # 使用模块别名作为前缀来访问模块中的成员 print(s.argv[0]) print(o.sep)
下面学习 from...import 导入模块内指定成员的方法
# 导入sys模块内的argv成员 from sys import argv # 使用导入成员的语法 直接使用成员名访问 print(argv[0])
使用from...import 导入模块成员时也可以为成员指定别名
# 导入sys模块内的argv成员,并为其指定别名 from sys import argv as v # 使用导入成员的语法,直接使用成员的别名访问 print(v[0])
使用 from...import导入模块成员时也可以同时导入多个成员
# 导入sys模块内的argv,winver成员 from sys import argv, winver # 使用导入成员的语法,直接使用成员名访问 print(argv[0]) print(winver)
使用from...import导入模块成员时也可以指定别名,同样使用as关键字为成员指定别名
# 导入sys模块中的argv,winver成员 并为其指定别名v wv from sys import argv as v, winver as wv # 使用导入成员 并指定别名 语法 直接使用成员的别名访问 print(v[0]) print(wv)
使用from...import 语法时一次导入指定模块的所有成员
# 导入sys模块内的所有成员 from sys import * # 使用导入成员的语法 直接使用成员别名访问 print(argv[0]) print(winver)
注意:一般不推荐使用 " from 模块 import * "这种语法导入指定模块内的所有成员 潜在风险较高
建议使用
import module1 import module2 as m2 # 分别调用2个模块中的函数 module1.foo() m2.foo()
或者使用from...import 语句也是可以的
from module1 import foo as foo1 from module2 import foo as foo2 # 分别使用函数 foo1() foo2()