python 3 __import__ 字符串动态加载模块

Python 动态加载

本文介绍动态的Python配置加载,期望从配置文件根据字符串加载module或者方法
解决: 动态加载module问题(未加载),类似的函数还有eval(获取作用域内方法), getattr(获取对象的方法)等
例如配置文件:

>>>	import 'os'  
    File "", line 1
    import 'os'
              ^
SyntaxError: invalid syntax

例如,通过__import__实现动态加载

	os_module = __import__('os')
	os_module.path  

通过一个例子,可以知道__import__可以加载字符串组成的函数。

__import__ (name[, globals[, locals[, fromlist[, level]]]])
  • name (required): 被加载 module 的名称
  • globals (optional): 包含全局变量的字典,该选项很少使用,采用默认值 global()
  • locals (optional): 包含局部变量的字典,内部标准实现未用到该变量,采用默认值 local()
  • fromlist (Optional): 被导入的 submodule 名称
  • level (Optional): 导入路径选项,默认为 -1,表示同时支持 absolute import 和 relative import

import的本质是调用__import加载module的,例如:

import os 
# 最终的函数调用实现如下
os = __import__('os', globals(), locals(), [], -1)

如果,参数中代用"."

>>> __import__("os")


>>> __import__("os.path")

你可能感兴趣的:(Python3)