Die folgende Befehlsfolge entfernt jeden Namen aus dem aktuellen Modul:
>>> import sys
>>> sys.modules[__name__].__dict__.clear()
Ich bezweifle, dass Sie dies tatsächlich tun möchten, da "jeder Name" alle integrierten Funktionen enthält, sodass Sie nach einem solchen vollständigen Auslöschen nicht viel tun können. Denken Sie daran, dass es in Python wirklich keine "Variable" gibt - es gibt Objekte verschiedener Art (einschließlich Module, Funktionen, Klassen, Zahlen, Zeichenfolgen, ...) und Namen , die an Objekte gebunden sind. Die Sequenz entfernt jeden Namen aus einem Modul (die entsprechenden Objekte verschwinden genau dann, wenn jeder Verweis auf sie gerade entfernt wurde).
Vielleicht möchten Sie selektiver sein, aber es ist schwer zu erraten, was Sie genau meinen, es sei denn, Sie möchten spezifischer sein. Aber nur um ein Beispiel zu geben:
>>> import sys
>>> this = sys.modules[__name__]
>>> for n in dir():
... if n[0]!='_': delattr(this, n)
...
>>>
Diese Sequenz hinterlässt private oder magische Namen, einschließlich des __builtins__
speziellen Namens, der alle integrierten Namen enthält. Einbauten funktionieren also immer noch - zum Beispiel:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'n']
>>>
Wie Sie sehen, bleibt auch n
der Name (die darin enthaltene Steuervariable for
) bestehen (da er for
jedes Mal in der Klausel neu gebunden wird ). Daher ist es möglicherweise besser, diese Steuervariable zu benennen _
, um beispielsweise deutlich zu zeigen, dass sie vorhanden ist special "(plus, im interaktiven Interpreter wird der Name _
ohnehin nach jedem vollständigen Ausdruck, der an der Eingabeaufforderung eingegeben wird, auf den Wert dieses Ausdrucks neu gebunden, damit er nicht lange anhält ;-).
Wie auch immer, wenn Sie genau bestimmt haben , was es ist etwas Sie tun wollen, ist es nicht schwer , eine Funktion für den Zweck zu definieren und sie in Ihrer Start-up - Datei (wenn Sie es in interaktiven Sitzungen nur wollen) oder Website-fertige Datei ( wenn Sie es in jedem Skript wollen).