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

Odpowiedzi:


206

%reset wydaje się jasne zdefiniowane zmienne.


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?

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

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


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


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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.