A seguinte sequência de comandos remove todos os nomes do módulo atual:
>>> import sys
>>> sys.modules[__name__].__dict__.clear()
Duvido que você realmente queira fazer isso, porque "todo nome" inclui todos os embutidos, então não há muito que você possa fazer após uma eliminação total. Lembre-se, em Python não existe realmente algo como uma "variável" - existem objetos , de muitos tipos (incluindo módulos, funções, classes, números, strings, ...), e existem nomes , vinculados a objetos; o que a sequência faz é remover todos os nomes de um módulo (os objetos correspondentes desaparecem se e somente se todas as referências a eles tiverem acabado de ser removidas).
Talvez você queira ser mais seletivo, mas é difícil adivinhar exatamente o que você quer dizer, a menos que queira ser mais específico. Mas, só para dar um exemplo:
>>> import sys
>>> this = sys.modules[__name__]
>>> for n in dir():
... if n[0]!='_': delattr(this, n)
...
>>>
Essa sequência deixa de lado os nomes que são privados ou mágicos, incluindo o __builtins__nome especial que abriga todos os nomes embutidos. Portanto, os integrados ainda funcionam - por exemplo:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'n']
>>>
Como você pode ver, name n(a variável de controle fornele) também permanece (já que é religado na forcláusula toda vez), então pode ser melhor nomear essa variável de controle _, por exemplo, para mostrar claramente "é especial "(mais, no interpretador interativo, o nome _é reconectado de qualquer maneira após cada expressão completa inserida no prompt, ao valor daquela expressão, de modo que não permanecerá por muito tempo ;-).
De qualquer forma, uma vez que você tenha determinado exatamente o que é que você quer fazer, não é difícil de definir uma função para o efeito e colocá-lo em seu arquivo de start-up (se quiser apenas em sessões interativas) ou arquivo local-personalize ( se você quiser em cada script).