eval intern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Hi,

ich habe vor kurzem die nette python Function 'eval' entdeckt und habe nun darüber nachgedacht, ob mir ihr Einsatz bei meiner Aufgabe helfen würde.

Und zwar müsste ich eine Sprache, die an C angelehnt ist, interpretieren und ausführen. Nun könnte ich einen eigenen Interpreter dafür schreiben, aber ich dachte, dass die Transformation in python code und dann die Benutzung von eval eventuell schnellere Ausführungszeiten zur Folge hat. Was macht eval intern? Parsed es den übergebenen String und führt all die Übersetzungsarbeit selbst durch, oder gibt es einfach den String an den python Interpreter weiter und überlässt ihm somit die "schmutzige Arbeit"?
(Bei genauerem Nachdenken macht eigentlich nur letzteres Sinn, denn sonst würde ja 2mal interpretiert werden... Aber egal, mich interessiert trotzdem was ihr dazu denkt).

lunas
Volvic
User
Beiträge: 30
Registriert: Donnerstag 14. Juni 2007, 05:18

ich denke dafür musste exec verwendet, eval kann nur einzelne "befehle". bloß sei gewarnt, exec ist nicht sonderlich schnell ;)
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Volvic hat geschrieben:ich denke dafür musste exec verwendet, eval kann nur einzelne "befehle".
Genauer "Ausdrücke".
exec ist nicht sonderlich schnell ;)
Warum? Nachdem der übergebene String kompiliert ist (und das geht sehr schnell), ist die Ausführung genauso schnell oder langsam wie die anderer Codeteile.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Man könnte aber auch direkt Python-Bytecode generieren, so wie es einige Templatesprachen machen. Oder Java-Bytecode, wie es Jython und Groovie machen..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Vielen Dank für die vielen hilfreichen Antworten.
Antworten