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