unterschied zwischen statement und expression herausfinden

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
init-0
User
Beiträge: 38
Registriert: Samstag 22. Januar 2011, 18:46

Hallo,

Ich habe vor mir mehr oder weniger eine eigene pythonshell, die übers netzwerk erreichbar ist, zu programmieren.
Dazu würde ich exec und eval benutzen, aber ich weiß nicht wie ich entscheiden kann welches ich wann benutze, da ich bei statements gerne einen rückgabewert hätte.
Mein bisheriger ansatz funktioniert zwar, ist aber aufgrund vom exceptionhandling irgendwie unschön:

Code: Alles auswählen

>>> def execute(string):
	mode = eval
	try:
		c = compile(string, "<input>", "eval")
	except SyntaxError:
		mode = exec
		c = compile(string, "<input>", "exec")
	return mode (c)

>>> execute("x==1")
False
>>> execute("x=1")
>>> x # = 2 da nur local
2
>>> execute("print('asdf')")
asdf
Gibt es da bessere Möglichkeiten?
BlackJack

@init-0: Warum startest Du nicht eine echte Python-Shell und kommunizierst mit der über's Netzwerk? Es gibt da so schicke Programme wie ``ssh``. ;-)

Ansonsten musst Du das Rad nicht neu erfinden. In der Standardbibliothek gibt es doch schon das `code`-Modul.
Antworten