我需要从作为字符串提供的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()
似乎不是一个好的解决方案。有没有更优雅的方法来实现这一点?你知道吗
Python's ^{} function 接受
globals
参数。所以你可以这样做:相关问题 更多 >
编程相关推荐