gpt4 book ai didi

python - 动态导入模块以在 lambda 表达式中使用

转载 作者:行者123 更新时间:2023-12-01 07:14:45 25 4
gpt4 key购买 nike

我需要从以字符串形式提供的 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 eval function接受 globals 参数。所以你可以做这样的事情:

function = eval('lambda ' + lambda_expression, lambda_globals)

关于python - 动态导入模块以在 lambda 表达式中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58029742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com