Wie lösche ich Variablen in ipython?

146

Manchmal führe ich ein Skript innerhalb derselben Ipython-Sitzung erneut aus und bekomme schlimme Überraschungen, wenn Variablen nicht gelöscht wurden. Wie lösche ich alle Variablen? Und ist es möglich, dies jedes Mal zu erzwingen, wenn ich den magischen Befehl% run aufrufe?

Vielen Dank

Heuschrecke
quelle

Antworten:

206

%reset scheint definierte Variablen zu löschen.

aisbaa
quelle
2
Vielen Dank. Gibt es eine Möglichkeit, es vor jedem% -Lauf automatisch einzustellen?
Heuschrecke
2
Sie können Ihr Skript in eine Funktion konvertieren, um den globalen Namespace sauber zu halten.
Robert Pollak
35
Gerade gefunden% reset -f löscht den globalen Namespace ohne Benutzerbestätigung
WillJones
1
Ja Reset -f ist großartig, es ist nicht mehr nötig, jedes Mal manuell zu bestätigen :)
user3723247
1
@ Victor %wird für ipython magische Befehle verwendet, hier ist %reset ipython.readthedocs.io/en/stable/interactive/…
aisbaa
56

BEARBEITET nach @ErdemKAYA Kommentar.

Verwenden Sie den magischen Befehl, um eine Variable zu löschen:

%reset_selective <regular_expression>

Die Variablen, die aus dem Namespace gelöscht werden, stimmen mit den angegebenen überein <regular_expression>.

Deshalb

%reset_selective -f a 

löscht alle Variablen, die ein enthalten a.

Stattdessen nur löschen aund nicht aa:

In: a, aa = 1, 2
In: %reset_selective -f "^a$"
In: a  # raise NameError
In: aa  # returns 2

siehe auch %reset_selective?für weitere Beispiele und https://regexone.com/ für eine Regex Tutorial.

Informationen zum Löschen aller Variablen im Namespace finden Sie unter:

%reset?
SeF
quelle
9
Andernfalls kann auch "del a" aus Python verwendet werden.
SeF
1
Nein, dieser Befehl wird name_variableals Regex-Anweisung behandelt und entfernt alles, was dazu passt.
Erdem KAYA
@ErdemKAYA danke, ich habe es noch nie bemerkt! Antwort bearbeitet.
SeF
1
Überhaupt nicht! :) Es ist in der Tat etwas kontraintuitiv.
Erdem KAYA
37

In iPython können Sie eine einzelne Variable wie folgt entfernen :

del x
Joop
quelle
13

Ich habe es versucht

%reset -f

und löschte alle Variablen und Inhalte ohne Aufforderung. -fFührt die Force-Aktion für den angegebenen Befehl aus, ohne nach Ja / Nein zu fragen .

Wünschte das hilft .. :)

Babu KM
quelle
9

Durch Hinzufügen der folgenden Zeilen zu einem neuen Skript werden alle Variablen jedes Mal gelöscht, wenn Sie das Skript erneut ausführen:

from IPython import get_ipython
get_ipython().magic('reset -sf') 

Um Ihnen das Leben zu erleichtern, können Sie sie Ihrer Standardvorlage hinzufügen.

In Spyder: Tools>Preferences>Editor>Edit template

Carl
quelle
Ich mag das, da es auch von einem Skript ausgeführt werden kann.
Zargo
4

Abgesehen von den zuvor genannten Methoden. Sie können auch den Befehl del verwenden, um mehrere Variablen zu entfernen

del variable1,variable2
Devarshi Mandal
quelle
0

Eine Beendigungsoption im Konsolenfenster löscht auch alle Variablen im Variablen-Explorer

*** Beachten Sie, dass Sie den gesamten Code verlieren, den Sie im Konsolenfenster ausgeführt haben

Sirish
quelle