12.1.1. import 导入模块¶
在当前目录下创建三个文件 module0.py,module1.py 和 test_module.py,也即创建了三个模块,
它们的名字和文件名一致,分别为 module0,module1 和 test_module。
我们在 test_module 模块中引用 module0 和 module1 中的函数:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# module0.py
module_name = 'module0'
def module_info():
print("func in module0")
# module1.py
module_name = 'module1'
def module_info():
print("func in module1")
# test_module.py
import module0, module1 # 导入模块
print(module0.module_name)
print(module1.module_name)
module0.module_info()
module1.module_info()
>>>
module0
module1
func in module0
func in module1
import 语句是导入模块的一种方式,它具有以下特点:
一条 import 语句可以同时导入多个模块,以逗号分隔
import 将整个模块的全局符号表导入到当前模块的符号表中,可以使用模块中所有全局变量,类和函数
import 导入的模块,对其中的变量和函数访问时要加上模块名
导入的模块中相同函数名和变量名不会冲突
import 语句通常放在文件开头,这不是必须的,它也可以放在靠近引用模块的代码前。
重复导入相同的模块不会产生错误,解释器只在最早出现的 import 该模块的语句处导入。
导入模块时,解释器按照 sys.path 给出的路径顺序查找要导入的模块,以下是 Linux环境上的一个实例:
0
1
2
3
4
5
6import sys
print(sys.path)
>>>
['/home/red/sdc/lbooks/ml', '/usr/lib/python3.4',
'/usr/lib/python3.4/plat-i386-linux-gnu', '/usr/lib/python3.4/lib-dynload',
'/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
当前路径具有最高优先级,所以模块命名不可与 Python 自带模块或第三方模块命名冲突,也不可和类,全局变量,内建函数命名冲突。sys.path 是一个路径的列表变量,
可以添加指定的路径:
0sys.path.append('/sdc/lib/python')
12.1.1.1. 重命名模块¶
使用 import 导入时可以为模块重新命名,将长命名模块进行缩写,可以让代码更简洁:
0
1
2
3
4
5
6import module0 as m0
import module1 as m1
print(m0.module_name)
print(m1.module_name)
m0.module_info()
m1.module_info()