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

Antworten:


206

%reset scheint definierte Variablen zu löschen.


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?

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

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 .. :)


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


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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.