Jak wyczyścić zmienne w ipythonie?

146

Czasami ponownie uruchamiam skrypt w tej samej sesji ipython i otrzymuję złe niespodzianki, gdy zmienne nie zostały wyczyszczone. Jak wyczyścić wszystkie zmienne? Czy można to jakoś wymusić za każdym razem, gdy wywołuję magiczne polecenie% run?

Dzięki

konik polny
źródło

Odpowiedzi:

206

%reset wydaje się jasne zdefiniowane zmienne.

aisbaa
źródło
2
Dzięki. Czy jest jakiś sposób, aby ustawić to automatycznie przed każdym uruchomieniem%?
konik polny
2
Możesz przekonwertować swój skrypt na funkcję, aby utrzymać czystość globalnej przestrzeni nazw.
Robert Pollak
35
Właśnie znalazłem% reset -f czyści globalną przestrzeń nazw bez potwierdzenia przez użytkownika
WillJones,
1
tak reset -f jest super, nie ma już potrzeby ręcznego potwierdzania za każdym razem :)
user3723247
1
@Victor %jest używany do magicznych poleceń ipython tutaj: %reset ipython.readthedocs.io/en/stable/interactive/ ...
aisbaa
56

EDYTOWANE po komentarzu @ErdemKAYA.

Aby usunąć zmienną, użyj magicznego polecenia:

%reset_selective <regular_expression>

Zmienne, które są usuwane z przestrzeni nazw, są tymi, które pasują do podanej <regular_expression>.

W związku z tym

%reset_selective -f a 

usunie wszystkie zmienne zawierające a.

Zamiast tego wymazać tylko, aa nie aa:

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

zobacz również %reset_selective?więcej przykładów i https://regexone.com/, aby zapoznać się z samouczkiem dotyczącym wyrażeń regularnych.

Aby usunąć wszystkie zmienne w przestrzeni nazw, zobacz:

%reset?
SeF
źródło
9
W przeciwnym razie można również użyć "del a" z pythona.
SeF
1
Nie, to polecenie potraktuje name_variablejako wyrażenie regex i usunie wszystko, co do niego pasuje.
Erdem KAYA,
@ErdemKAYA dzięki, nigdy wcześniej tego nie zauważyłem! Odpowiedź edytowana.
SeF
1
Ani trochę! :) Jest to rzeczywiście nieco sprzeczne z intuicją.
Erdem KAYA
37

W iPythonie możesz usunąć jedną zmienną w następujący sposób:

del x
Joop
źródło
13

próbowałem

%reset -f

i wyczyścił wszystkie zmienne i zawartość bez pytania. -fwykonuje wymuszenie akcji na danym poleceniu bez pytania o odpowiedź tak / nie .

Chciałbym, żeby to pomogło ... :)

Babu KM
źródło
9

Dodanie następujących wierszy do nowego skryptu spowoduje wyczyszczenie wszystkich zmiennych przy każdym ponownym uruchomieniu skryptu:

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

Aby ułatwić sobie życie, możesz dodać je do swojego domyślnego szablonu.

W Spyder: Tools>Preferences>Editor>Edit template

Carl
źródło
Podoba mi się to, ponieważ można go również uruchomić ze skryptu.
Zargo
4

Oprócz metod wymienionych wcześniej. Możesz także użyć polecenia del, aby usunąć wiele zmiennych

del variable1,variable2
Devarshi Mandal
źródło
0

Opcja wyjścia w panelu konsoli również wyczyści wszystkie zmienne w eksploratorze zmiennych

*** Pamiętaj, że stracisz cały kod, który uruchomiłeś w panelu konsoli

Sirish
źródło