我想将函数定义传递给python命令行脚本。做这个的最好方式是什么?我使用python 2.假设我有一个这样的脚本:如何将函数定义传递给python脚本作为字符串
#myscript.py
x = load_some_data()
my_function = load_function_definition_from_command_line()
print my_function(x)
,我想这样称呼它:python myscript.py 'def fun(x): return len(x)'
我如何执行load_function_definition_from_command_line
一部分?
我想一个解决办法:
- 得到命令行字符串函数定义
- 它写在一些临时目录
- 负载使用的解决方案从文件中定义的.py扩展名的文件这个问题:How to import a module given the full path?
- 执行
- 清理
但我确定必须有更好的方法。
我想你调用代码应该解释你为什么要传递一个函数作为一个字符串来运行的原因。这可以帮助我们更好地帮助你,并且可能找到一种解决方法来使用当前答案所提示的内容(eval和exec)。评估命令行参数并将其作为代码运行极其危险,除非绝对必要,否则不应该完成。 – disflux
出于好奇 - 你为什么需要这个?我问,因为它导致非常糟糕的解决方案(eval),也许你只是没有看到其他的可能性。 –
我正在编写一个shell应用程序,用于对来自其他应用程序的日志/输出进行map/reduce/filter操作 –