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)