La seguente sequenza di comandi rimuove ogni nome dal modulo corrente:
>>> import sys
>>> sys.modules[__name__].__dict__.clear()
Dubito che tu voglia davvero farlo, perché "ogni nome" include tutti i built-in, quindi non c'è molto che puoi fare dopo una tale cancellazione totale. Ricorda, in Python non esiste davvero una cosa come una "variabile" - ci sono oggetti , di molti tipi (inclusi moduli, funzioni, classi, numeri, stringhe, ...) e ci sono nomi , legati a oggetti; quello che fa la sequenza è rimuovere ogni nome da un modulo (gli oggetti corrispondenti scompaiono se e solo se ogni riferimento ad essi è stato appena rimosso).
Forse vuoi essere più selettivo, ma è difficile indovinare esattamente cosa intendi a meno che tu non voglia essere più specifico. Ma, solo per fare un esempio:
>>> import sys
>>> this = sys.modules[__name__]
>>> for n in dir():
... if n[0]!='_': delattr(this, n)
...
>>>
Questa sequenza lascia da soli i nomi privati o magici, incluso il __builtins__nome speciale che ospita tutti i nomi incorporati. Quindi, i built-in funzionano ancora, ad esempio:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'n']
>>>
Come puoi vedere, anche il nome n(la variabile di controllo in quella for) rimane inalterato (poiché viene ricollegato nella forclausola ogni volta), quindi potrebbe essere meglio nominare quella variabile di controllo _, ad esempio, per mostrare chiaramente "è special "(inoltre, nell'interprete interattivo, il nome _viene ricollegato comunque dopo ogni espressione completa immessa al prompt, al valore di quell'espressione, quindi non rimarrà a lungo ;-).
Comunque, una volta che avete determinato esattamente che cosa è che si vuole fare, non è difficile definire una funzione per lo scopo e metterlo nel file di start-up (se lo vuoi solo in sessioni interattive) o un file sito da personalizzare ( se lo vuoi in ogni script).