2016-05-19 10 views
3

einen String Betrachten Sie die eine Lambda-Funktionkann ich eine Lambda-Funktion als String übergeben ausführen

fn = "lambda x: x+10" 

ich so etwas wie dieses,

map (fn,xrange(10)) 

tun müssen, stellt dar, wie ich Code zu bekommen/Funktion von String in Python?

+1

Sie können [eval] (http://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice) es, aber warum haben Sie eine Zeichenfolge an erster Stelle ? – kennytm

+2

Dies ist ein Job für 'eval', aber' eval' (und 'exec') sollte generell vermieden werden, da sie ein Sicherheitsrisiko darstellen können. Für Details, siehe [Eval ist wirklich gefährlich] (http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html) von SO Veteran Ned Batchelder. –

Antwort

5

Sie könnten eval diese Zeichenfolge, aber ich kann es nicht empfehlen.

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

eval unsicher ist so stark Ich schlage vor, dass Sie Ihr Problem beheben Upstream, warum Sie eine Zeichenfolge an erster Stelle haben Sie? Aber technisch, ja, Eval ist die Antwort.

+0

wird versuchen, es zu vermeiden, wenn möglich, danke für die Hilfe. – deepak

Verwandte Themen