我想將函數定義傳遞給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操作 –