python lib import and reload

import 和 reload

1
2
3
4
5
6
7
import:
导入/引入一个python标准模块,其中包括.py文件,带有__init__.py文件的目录
多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境

reload:
对已经加载的模块进行重新加载,一般用于原模块有变化等特殊情况,reload前该模块必须已经import过
reload会重新加载已加载的模块,但原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块;reload后还是用原来的内存地址,不支持from..import..格式的模块进行重新加载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@smallasa lib]# cat a.py
#!/usr/bin/env python
#encoding: utf-8
import os
print('in a',id(os))
[root@smallasa lib]# python a.py
('in a', 139827193375664)

[root@smallasa lib]# cat b.py
#!/usr/bin/env python
#encoding: utf-8
import a
import os
print('in b',id(os))
import a
[root@smallasa lib]# python b.py
('in a', 140093448608688)
('in b', 140093448608688)

[root@smallasa lib]# cat c.py
#!/usr/bin/env python
#encoding: utf-8
import a
import os
print('in c',id(os))
reload(a)
[root@smallasa lib]# python b.py
('in a', 140603580398512)
('in c', 140603580398512)
('in a', 140603580398512)