我在一个子模块中有一个函数,通常可以这样导入:
from core.somepack import my_func
取而代之的是,我想通过给定的Python 弦core.somepack.my_func
懒洋洋地导入它.做这件事最好的方法是什么?
my_func = some_function_i_am_asking_for('core.somepack.my_func')
my_func()
我在一个子模块中有一个函数,通常可以这样导入:
from core.somepack import my_func
取而代之的是,我想通过给定的Python 弦core.somepack.my_func
懒洋洋地导入它.做这件事最好的方法是什么?
my_func = some_function_i_am_asking_for('core.somepack.my_func')
my_func()
试着使用python内置的importlib
模块.
当模块名称直到运行时才知道时,它有助于在运行时导入模块或函数.
以下是使用importlib
进行延迟导入的示例代码:
import importlib
def lazy_import(fn_path):
module_path, fn_name = fn_path.rsplit('.', 1)
module = importlib.import_module(module_path)
fn = getattr(module, fn_name)
return fn
您可以使用'module_name.func_name'
字符串调用lazy_import
函数.