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.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

eval intern

Beitragvon lunas » Montag 20. August 2007, 03:25

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

Beitragvon Volvic » Montag 20. August 2007, 23:23

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

Beitragvon birkenfeld » Dienstag 21. August 2007, 14:30

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/
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 21. August 2007, 14:36

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 Modvoice
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Beitragvon lunas » Mittwoch 22. August 2007, 08:21

Vielen Dank für die vielen hilfreichen Antworten.

Wer ist online?

Mitglieder in diesem Forum: brainstir