Как очистить переменные в 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?

10
В противном случае также можно использовать "del a" из python.
SeF

1
Нет, эта команда будет рассматриваться name_variableкак выражение регулярного выражения и удалит все, что ей соответствует.
Erdem KAYA

@ErdemKAYA спасибо, никогда раньше не замечал! Ответ отредактирован.
SeF

1
Не за что! :) Это действительно несколько нелогично.
Erdem KAYA

38

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

del x

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.