从python脚本执行字符串化的python函数

时间:2018-11-13 11:09:25

标签: python

我想以类似于Javascript的方式使用Python的评估。在Javascript中,我可以评估如下内容:

const myfunc = eval('function(arg1, arg2) { ...... }');
myfunc(1, 2);

首先,我首先要说的是运行的功能并非来自用户区-只有我们团队中的管理员才能编写功能,这是我们产品体系结构的核心部分。我知道安全隐患:)

我想到的一些事情包括:

  1. 在运行时(因此保留了格式),使用库将代码转换为单行代码。但是我真的不想依靠第三方库来执行此操作,因为这会带来潜在的未来安全漏洞。
  2. 暂时将脚本保存到文件中,然后使用importlib动态导入该文件。但是,如果文件管理命令失败或使用不当,我最终会陷入服务器状态的怪异状态,而且我很反感我会调用错误的脚本并执行错误的代码。

这些选项我都不是真的。我知道我可以根据需要让它们都工作,但是希望能从比我更了解Python的人那里得到意见。

1 个答案:

答案 0 :(得分:0)

我使用了第二个选项-它比eval更好。

包含整个类及其功能的文件可以在运行时编写并执行。 使用某种方案,您每次都写一个不同的类名并匹配类名和函数名,可以确保您在需要时调用正确的脚本。