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

Respostas:


206

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


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?

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

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


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


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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.