__import__()函数是一个高级函数,用于动态地导入模块,import语句实际上就是调用了这个函数;
函数语法
__import__(name, globals=None, locals=None, fromlist=[], level=0)
参数:
name:要导入的模块名,字符串形式;globals:全局命名空间;locals:局部命名空间;fromlist:指定从模块导入的名称列表;level:相对导入的层级;
__import__()函数返回导入的模块对象;
__import__() 函数示例
简单的导入方法:
# 等同于 import math
math = __import__('math')
print(math.sqrt(4)) # 2.0
print(math.pi) # 3.141592653589793
导入自定义的.py文件时,名称不要包含.py:
# 导入 example.py
example = __import__('example')
同一个模块只会加载一次:
import math
math_module = __import__('math')
print(math is math_module) # True
参数fromlist的作用:
# 没有 fromlist,总是返回最顶层模块
result = __import__('os.path')
print(result.__name__) # os
# result 是 os 模块
#print(result.join('a','b')) # 错误
print(result.path.join('a','b'))
# 有 fromlist → 返回导入语句中指定的模块
# fromlist 中的内容可以随意,但必须为非空列表
result = __import__('os.path', fromlist=['fake'])
print(result.__name__) # ntpath
# result 是 os.path
#print(result.path.join('a','b')) # 错误
print(result.join('a','b'))