动态导入模块以供lambda表达式使用

2024-04-26 23:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从作为字符串提供的lambda表达式动态创建一个函数(它将从配置文件中读取)。我想允许用户也指定一个模块列表,然后可以在lambda表达式中使用。为此,我需要动态加载模块并使其可用,以便可以在lambda表达式中按名称引用它们。你知道吗

以下是我想做的一个可能的实现:

import importlib

def create_function(lambda_expression, modules=[]):
    for module in modules:
        globals()[module] = importlib.import_module(module)
    function = eval('lambda ' + lambda_expression)
    return function

它的用法如下:

f = create_function('x: numpy.clip(x, 0, 1)', ['numpy'])

然而,使用globals()似乎不是一个好的解决方案。有没有更优雅的方法来实现这一点?你知道吗


Tags: 模块lambda函数字符串importnumpymodules表达式