La siguiente secuencia de comandos no eliminar cada nombre el módulo actual:
>>> import sys
>>> sys.modules[__name__].__dict__.clear()
Dudo que realmente quiero hacer esto, porque "todo nombre" incluye todas Buil T-ins, por lo que no hay mucho que pueda hacer después de una eliminación total. Recuerde, en Python no existe realmente una "variable": hay objetos, de muchos tipos (incluidos módulos, funciones, clases, números, cadenas, ...), y hay nombres, atada a objetos; lo que hace la secuencia es eliminar cada nombre de un módulo (los objetos correspondientes desaparecen si y solo si cada referencia a ellos acaba de ser eliminada).
Quizás quieras ser más selectivo, pero es difícil adivinar exactamente a qué te refieres a menos que quieras ser más específico. Pero, sólo para dar un ejemplo:
>>> import sys
>>> this = sys.modules[__name__]
>>> for n in dir():
... if n[0]!='_': delattr(this, n)
...
>>>
Esta secuencia deja solos nombres que son privadas o mágico, incluyendo el nombre especial __builtins__
que alberga todos los incorporados en los nombres. Así, muebles empotrados todavía funcionan - por ejemplo:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'n']
>>>
Como se puede ver, el nombre n
(la variable de control en el que for
) también pasa a quedarse (como se le re-ligada en el for
cláusula cada vez hasta), por lo que podría ser mejor nombrar esa variable de control _
, por ejemplo, para mostrar claramente "es especial" (además, en el intérprete interactivo, el nombre _
se vuelve a enlazar de todos modos después de cada expresión completa ingresada en el indicador, el valor de esa expresión, por lo que no se mantendrá durante mucho tiempo ;-).
De todos modos, una vez que haya determinado exactamente lo que es que quiere hacer, no es difícil de definir una función para el propósito y lo puso en su archivo de puesta en marcha (si quieres que sólo en sesiones interactivas) o archivo de personalización del sitio (si lo desea en cada secuencia de comandos).
Te será útil si cambiaste tu título a algo así como "¿Cómo elimino todas las variables en medio de una secuencia de comandos de Python?" para futuras búsquedas sobre el tema, porque "¿Cómo reiniciar la ventana de comandos en Python?" no tiene nada que ver con lo que realmente estás preguntando. – sdolan
@sdolan changed – snakile
¿Puede proporcionarnos algún contexto posible en el que esto tenga sentido? –