Um Definitionen wieder zu beseitigen, habe ich zwei Lösungen gefunden. Die eine wäre eine modifiziertes read().
Wenn man von einem File liest, könnte man die Zeilen einzeln lesen und dann jede Zeile um vier Leerzeichen oder einen Tab einrücken.
Und eine vorgeschaltete erste Zeile könnte dann den Beginn einer Funktionsdefinition enthalten, etwa:
Code: Alles auswählen
def function()
Das wäre die eine Lösung, damit man nur lokale Defintionen bekommt, außer natürlich "function"
Die andere Lösung wäre, dass man globale Definitionen in Kauf nimmt und sie dann rauswirft. Aber so etwas gefällt hier wohl niemand:
Code: Alles auswählen
def clean_eval(evcode):
glob_before = globals().keys()
eval(evcode)
glob_after = globals().keys()
for element in glob_after:
if element not in glob_before: del globals()[element]
Auch eine Lösung wäre natürlich, gleich in den Scripts, die man lädt, diese Funktionsdefinition am Anfang zu machen. Also Lösung Nummer 3