Bagaimana cara menghapus variabel di ipython?

146

Kadang-kadang saya menjalankan kembali skrip dalam sesi ipython yang sama dan saya mendapatkan kejutan buruk ketika variabel belum dihapus. Bagaimana cara menghapus semua variabel? Dan mungkinkah untuk memaksakan ini entah bagaimana setiap kali saya menjalankan perintah sihir% run?

Terima kasih

belalang
sumber

Jawaban:

206

%reset tampaknya menghapus variabel yang didefinisikan.

Aisbaa
sumber
2
Terima kasih. Adakah cara untuk mengaturnya secara otomatis sebelum setiap% dijalankan?
Belalang
2
Anda bisa mengonversi skrip Anda menjadi fungsi untuk menjaga namespace global tetap bersih.
Robert Pollak
35
Baru ditemukan% reset -f membersihkan namespace global tanpa konfirmasi pengguna
WillJones
1
ya reset -f hebat, tidak perlu secara manual mengkonfirmasi setiap kali lagi :)
user3723247
1
@ Viktor %digunakan untuk perintah sihir %reset ipython
aisbaa
56

Diedit setelah komentar @ErdemKAYA.

Untuk menghapus variabel, gunakan perintah ajaib:

%reset_selective <regular_expression>

Variabel yang dihapus dari namespace adalah yang cocok dengan yang diberikan <regular_expression>.

Karena itu

%reset_selective -f a 

akan menghapus semua variabel yang mengandung a.

Sebaliknya, untuk menghapus saja adan tidak aa:

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

lihat juga %reset_selective?untuk lebih banyak contoh dan https://regexone.com/ untuk tutorial regex.

Untuk menghapus semua variabel di namespace, lihat:

%reset?
SeF
sumber
9
Kalau tidak "del a" dari python, bisa digunakan juga.
SeF
1
Tidak, perintah ini akan diperlakukan name_variablesebagai pernyataan regex, dan akan menghapus apa pun yang cocok dengannya.
Erdem KAYA
@ErdemKAYA terima kasih, saya tidak pernah menyadarinya sebelumnya! Jawaban diedit.
SeF
1
Tidak semuanya! :) Memang agak kontra intuitif.
Erdem KAYA
37

Di iPython Anda dapat menghapus satu variabel seperti ini:

del x
Joop
sumber
13

Saya mencoba

%reset -f

dan membersihkan semua variabel dan konten tanpa diminta. -fmelakukan tindakan paksa pada perintah yang diberikan tanpa meminta ya / tidak .

Semoga ini bisa membantu .. :)

Babu KM
sumber
9

Menambahkan baris berikut ke skrip baru akan menghapus semua variabel setiap kali Anda menjalankan ulang skrip:

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

Agar mudah, Anda dapat menambahkannya ke templat default Anda.

Dalam Spyder: Tools>Preferences>Editor>Edit template

Carl
sumber
Saya suka ini karena juga dapat dijalankan dari skrip.
Zargo
4

Terlepas dari metode yang disebutkan sebelumnya. Anda juga dapat menggunakan del perintah untuk menghapus beberapa variabel

del variable1,variable2
Devarshi Mandal
sumber
0

Opsi berhenti di Panel Konsol juga akan menghapus semua variabel di penjelajah variabel

*** Perhatikan bahwa Anda akan kehilangan semua kode yang telah Anda jalankan di Panel Konsol

Sirish
sumber