__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'))