import加载的底层原理

import的动态导入

import语句本质上就是调用内置函数__import__(), 我们可以通过他实现动态导入, 给__import__()动态传入不同的值, 就能导入不同的模块

1 s = 'math'
2 m = __import__(s)
3 a = m.pi
4 b = m.sin(30)
5 print(a)
6 print(b)

 

 [注意]:  一般不建议自行导入__import__(), 会导致动态错误, 如果需要动态导入请使用importlib模块

1 import importlib
2 a = importlib.import_module('math')
3 print(a.pi)

 

 

模块加载问题

当导入一个模块时, 模块中的代码都会被执行, 不过, 如果再次导入这个模块, 则不会再次执行. 

一个模块无论导入了多少次, 这个模块在整个解释器进程内有且只有一个实例对象

1 #coding: utf-8
2 import math
3 print('Python07,实例被加载......')
4 def t1():
5     pass

加载:

1 #coding:utf-8
2 import Python07
3 import Python07
4 import Python07
5 
6 print('###')
7 import importlib
8 importlib.reload(Python07)