Следующая последовательность команд удаляет все имена из текущего модуля:
>>> import sys
>>> sys.modules[__name__].__dict__.clear()
Я сомневаюсь, что вы действительно хотите этого, потому что "каждое имя" включает в себя все встроенные модули, поэтому после такого полного уничтожения вы мало что сможете сделать. Помните, что в Python на самом деле нет такой вещи, как «переменная» - есть объекты многих видов (включая модули, функции, классы, числа, строки и т. Д.), И есть имена , привязанные к объектам; Последовательность удаляет каждое имя из модуля (соответствующие объекты удаляются тогда и только тогда, когда каждая ссылка на них была только что удалена).
Может быть, вы хотите быть более избирательным, но вам сложно угадать, что именно вы имеете в виду, если только вы не хотите быть более конкретным. Но просто чтобы привести пример:
>>> import sys
>>> this = sys.modules[__name__]
>>> for n in dir():
... if n[0]!='_': delattr(this, n)
...
>>>
Эта последовательность оставляет в покое имена, которые являются личными или магическими, включая __builtins__специальное имя, в котором находятся все встроенные имена. Итак, встроенные модули по-прежнему работают - например:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'n']
>>>
Как видите, имя n(в нем управляющая переменная for) также остается (поскольку оно повторно привязывается в forпредложении каждый раз), поэтому, возможно, было бы лучше назвать эту управляющую переменную _, например, чтобы четко показать «это special "(плюс, в интерактивном интерпретаторе имя в _любом случае повторно привязывается после каждого полного выражения, введенного в подсказке, к значению этого выражения, поэтому оно не останется в памяти надолго ;-).
Во всяком случае, как только вы определили , что именно это является вы хотите сделать, это не трудно определить функцию для этой цели и положить его в файл для запуска (если вы хотите его только в интерактивных сессиях) или файл сайт-подгоняет ( если вы хотите это в каждом скрипте).