【1】介绍
import importlib
importlib模块是Python中用于动态加载和导入模块的内置模块
它提供了一组函数和类,使得我们可以在运行时根据需要加载模块,并且可以对已导入的模块进行操作和管理
【2】importlib模块中的import_module方法
【2.1】导入模块
python
import importlib
# 起个变量名
module_name = 'my_package.my_func'
module_f = importlib.import_module(module_name)
print(module_f)
print(model_f.name)
'''
my_package.my_func --------- 文件的地址
'''
【2.2】动态加载模块
- 最小单位,只能到模块名
- importlib模块提供了import_module函数
- 通过该函数可以在运行时动态加载一个模块
示例
python
# 导入模块:动态加载一个模块
import importlib
# 定义模块的名字
module_name = 'math'
# 动态导入模块
math_module = importlib.import_module(module_name)
【2.3】导入指定模块成员
- importlib模块还提供了import_module函数的变体import_module
- 它可以直接返回指定模块的成员
示例
python
# 导入模块 : 动态加载一个模块
import importlib
# 定义模块的名字
module_name = 'math'
# 动态导入模块
math_module = importlib.import_module(module_name)
# 从模块中获取相关的值
sqrt_func = getattr(math_module, 'sqrt')
print(sqrt_func) # <built-in function sqrt>
【2.4】重新加载模块
- 在开发过程中,我们有时需要重新加载一个已经导入的模块,以便应用最新的修改
- importlib模块提供了reload函数实现这个功能
示例:
python
import importlib
# 要重新加载的模块名
module_name = 'my_module'
# 加载模块
my_module = importlib.import_module(module_name)
# 重新加载模块
my_module = importlib.reload(my_module)
【2.5】获取已导入的模块列表
- 通过sys.modules可以获取当前已导入的所有模块的字典
- 其中键为模块名称,值为模块对象
示例:演示如何遍历已导入的模块列表
python
import sys
for module_name,module in sys.modules.items():
print(module.name,module)