Como limpar variáveis ​​no ipython?

146

Às vezes, reexecuto um script na mesma sessão do ipython e fico com más surpresas quando as variáveis ​​não foram limpas. Como limpo todas as variáveis? E é possível forçar isso de alguma maneira toda vez que invoco o comando mágico% run?

obrigado

gafanhoto
fonte

Respostas:

206

%reset parece limpar as variáveis ​​definidas.

aisbaa
fonte
2
Obrigado. Alguma maneira de configurá-lo automaticamente antes de cada% de execução?
gafanhoto
2
Você pode converter seu script em uma função para manter limpo o espaço para nome global.
Robert Pollak
35
Só encontrei -f% reinicialização limpa o espaço global sem a confirmação do usuário
WillJones
1
sim redefinir -f é grande, não há necessidade de confirmar manualmente cada vez mais :)
user3723247
1
@Victor %é usado para comandos mágicos iPython aqui está %reset ipython.readthedocs.io/en/stable/interactive/...
aisbaa
56

EDITADO após o comentário @ErdemKAYA.

Para apagar uma variável, use o comando mágico:

%reset_selective <regular_expression>

As variáveis ​​que são apagadas do espaço para nome são as que correspondem ao especificado <regular_expression>.

Portanto

%reset_selective -f a 

irá apagar todas as variáveis ​​que contêm um a.

Em vez disso, apague apenas ae não aa:

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

veja também %reset_selective?para mais exemplos e https://regexone.com/ para obter um tutorial sobre regex.

Para apagar todas as variáveis ​​no espaço para nome, consulte:

%reset?
SeF
fonte
9
Caso contrário, "del a" do python também pode ser usado.
SeF
1
Não, esse comando tratará name_variablecomo uma instrução regex e removerá o que corresponder a ele.
Erdem KAYA
@ErdemKAYA obrigado, eu nunca notei isso antes! Resposta editada.
SeF
1
De modo nenhum! :) É realmente um pouco contra-intuitivo.
Erdem KAYA
37

No iPython, você pode remover uma única variável como esta:

del x
Joop
fonte
13

eu tentei

%reset -f

e limpou todas as variáveis ​​e conteúdos sem aviso prévio. -fexecuta a ação de força no comando especificado sem solicitar sim / não .

Gostaria que isso ajude .. :)

Babu KM
fonte
9

Adicionar as seguintes linhas a um novo script limpará todas as variáveis ​​sempre que você executar o script novamente:

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

Para facilitar a vida, você pode adicioná-los ao seu modelo padrão.

No Spyder: Tools>Preferences>Editor>Edit template

Carl
fonte
Eu gosto disso, pois também pode ser executado a partir de um script.
Zargo
4

Além dos métodos mencionados anteriormente. Você também pode usar o comando del para remover várias variáveis

del variable1,variable2
Devarshi Mandal
fonte
0

Uma opção de encerramento no painel do console também limpará todas as variáveis ​​no explorador de variáveis

*** Observe que você estará perdendo todo o código executado no painel do console

Sirish
fonte