2016-05-19 5 views
3

として渡されたラムダ関数を実行することができますが、私はこのような何かをする必要がありラムダ関数を表す文字列私は、文字列

fn = "lambda x: x+10" 

を考えてみましょう、

map (fn,xrange(10)) 

は、どのように私は、コード/機能を得ることができますPythonの文字列からですか?

+1

あなたは[eval](http://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice)ですが、なぜ最初の場所に文字列がありますか? – kennytm

+2

これは 'eval'の仕事ですが、' eval'(と 'exec')はセキュリティリスクの可能性があるので避けるべきです。詳細は、SOベテランNed Batchelderの[Eval really dangerous](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html)を参照してください。 –

答えて

5

evalその文字列は可能ですが、お勧めしません。

>>> f = eval("lambda x: x+10") 
>>> f(3) 
13 

evalので、私は強くあなたが上流のあなたの問題を解決することを示唆している、なぜあなたが最初の場所で文字列を持っていない危険なのですか?しかし、技術的には、ええ、答えは答えです。

+0

は、可能な限り使用しないようにします。助けてくれてありがとう。 – deepak

関連する問題