2016-12-12 11 views
-1

システムはフラスコを使用したWebアプリケーションです。 私は、関数を引数として受け取り、その関数を実行するProcessingLayerというクラスを持っています。 私は、関数の形でコードを入力し、それを文字列に関連づけて、その文字列が選択されたときにその関数を実行させたいと思っています。関数はパラメータを受け入れることができなければなりません。例えばユーザーがPythonコードを入力して実行する方法

dict_of_functions = {} 

def fun(*param): 
    //do something 

dict_of_functions[STRING_KEYWORD] = fun 

layer = ProcessingLayer(dict_of_functions[STRING_KEYWORD]) 

はこのようなものを処理するか、どのように私は最高のそれを実行しなければならないためのライブラリはありますか?ユーザーが作成する各関数とキーワードは別々のファイルになければならず、メインファイル(関数の呼び出し元)はそれらのファイルをインポートする必要がありますか?私は検索しようとしましたが、それについて何も見つかりませんでした。 すべての回答ありがとうございました。

答えて

1

私はあなたがしたいかを正確に理解していません行う。私はおそらく変数内に格納されているPythonコードを実行したいと思いますか?

str()のコードを実行するために使用できるbuild-in function exec()があります。

たとえば、ユーザーがフォーム内のコードを入力すると、あなたは変数にすることを保存:

my_form = "def fun():\n pass\n\nfun()" // This is the return from the Form 

あなたは今でコードを実行することができます

exec(my_form) 

Pythonは今実行:

def fun(): 
    pass 

fun() 

ユーザーは、そのフォームを使用して実際には悪いコードを実行できることを覚えておいてください。 ユーザが入力したコードを実行するのは悪い習慣です。

+0

申し訳ありませんが十分に明確ではありません。 ProcesingLayerというクラスがあり、これはパラメータとして関数(fun)を受け入れます。パラメーターを渡すことができるように、提供したコードの代替方法がありますか? – matchifang

関連する問題