Как очистить переменные в ipython?

152

Иногда я повторно запускаю сценарий в том же сеансе ipython и получаю неприятные сюрпризы, когда переменные не были очищены. Как очистить все переменные? И можно ли как-то заставить это работать каждый раз, когда я вызываю волшебную команду% run?

Благодарность

кузнечик
источник

Ответы:

212

%reset кажется, очищает определенные переменные.

Айсбаа
источник
2
Спасибо. Есть ли способ установить его автоматически перед каждым% запуском?
кузнечик
2
Вы можете преобразовать свой сценарий в функцию, чтобы поддерживать чистоту глобального пространства имен.
Роберт Поллак
37
Только что обнаруженный% reset -f очищает глобальное пространство имен без подтверждения пользователя
WillJones
1
да сброс -f отличный, больше не нужно каждый раз подтверждать вручную :)
user3723247
1
@Victor %используется для магических команд ipython здесь %reset ipython.readthedocs.io/en/stable/interactive/…
aisbaa
60

ИЗМЕНЕНО после комментария @ErdemKAYA.

Чтобы стереть переменную, используйте волшебную команду:

%reset_selective <regular_expression>

Переменные, которые удаляются из пространства имен, совпадают с заданными <regular_expression>.

Следовательно

%reset_selective -f a 

сотрет все переменные, содержащие a.

Вместо этого нужно только стереть, aа не aa:

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

см. также %reset_selective?дополнительные примеры и https://regexone.com/ для руководства по регулярным выражениям.

Чтобы стереть все переменные в пространстве имен, см .:

%reset?
SeF
источник
10
В противном случае также можно использовать "del a" из python.
SeF
1
Нет, эта команда будет рассматриваться name_variableкак выражение регулярного выражения и удалит все, что ей соответствует.
Erdem KAYA
@ErdemKAYA спасибо, никогда раньше не замечал! Ответ отредактирован.
SeF
1
Не за что! :) Это действительно несколько нелогично.
Erdem KAYA
38

В iPython вы можете удалить одну переменную следующим образом:

del x
Joop
источник
14

Я старался

%reset -f

и очистил все переменные и содержимое без запроса. -fвыполняет принудительное действие по данной команде без запроса на да / нет .

Желаю, чтобы это помогло .. :)

Бабу КМ
источник
9

Добавление следующих строк в новый скрипт будет очищать все переменные каждый раз при повторном запуске скрипта:

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

Чтобы упростить жизнь, вы можете добавить их в свой шаблон по умолчанию.

В Spyder: Tools>Preferences>Editor>Edit template

Карл
источник
Мне это нравится, так как его также можно запустить из сценария.
Зарго
6

Помимо упомянутых ранее методов. Вы также можете использовать команду del для удаления нескольких переменных

del variable1,variable2
Деварши Мандал
источник
0

Параметр выхода на панели консоли также очищает все переменные в проводнике переменных.

*** Обратите внимание, что вы потеряете весь код, который вы запускали в панели консоли.

Сириш
источник