【发布时间】:2016-04-21 03:05:54
【问题描述】:
我想将 函数定义 传递给 python 命令行脚本。做这个的最好方式是什么?我正在使用 python 2。假设我有一个这样的脚本:
#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)。评估命令行参数并将其作为代码运行是极其危险的,除非绝对必要,否则不应这样做。
-
只是出于好奇 - 为什么需要这个?我问是因为它会导致非常糟糕的解决方案(评估),也许您只是看不到其他可能性..
-
我正在编写一个 shell 应用程序,用于对其他应用程序的日志/输出进行 map/reduce/filter 操作
标签: python function parsing command-line-arguments