如何在ipython中清除变量?

gra*_*per 122 python memory ipython

有时我会在同一个ipython会话中重新运行一个脚本,当变量尚未清除时,我会收到很多惊喜.如何清除所有变量?每当我调用魔术命令%run时,是否有可能以某种方式强制执行此操作?

谢谢

ais*_*baa 177

%reset 似乎清楚定义的变量.

  • 刚发现%reset -f在没有用户确认的情况下清除全局命名空间 (27认同)
  • 谢谢.有没有办法在每次%运行之前自动设置它? (2认同)
  • 您可以将脚本转换为函数以保持全局命名空间清洁. (2认同)

SeF*_*SeF 47

在@ErdemKAYA评论后编辑.

要擦除变量,请使用magic命令:

%reset_selective <regular_expression>
Run Code Online (Sandbox Code Playgroud)

从命名空间中删除的变量是与给定的匹配的变量<regular_expression>.

因此

%reset_selective -f a 
Run Code Online (Sandbox Code Playgroud)

将删除包含的所有变量a.

相反,只擦除a而不是aa:

In: a, aa = 1, 2
In: %reset_selective -f "^a$"
In: a  # raise NameError
In: aa  # returns 2
Run Code Online (Sandbox Code Playgroud)

另请参阅%reset_selective?更多示例和https://regexone.com/以获取正则表达式教程.

要擦除命名空间中的所有变量,请参阅:

%reset?
Run Code Online (Sandbox Code Playgroud)

  • 否则也可以使用python中的"del a". (9认同)

Joo*_*oop 27

在iPython中,您可以删除单个变量,如下所示:

del x
Run Code Online (Sandbox Code Playgroud)


小智 10

我试过了

%reset -f
Run Code Online (Sandbox Code Playgroud)

并在没有提示的情况下清除所有变量和内容.-f在没有提示是/否的情况下对给定命令执行强制操作.

希望这有帮助.. :)


小智 9

除了前面提到的方法。也可以使用命令 del 删除多个变量

del variable1,variable2
Run Code Online (Sandbox Code Playgroud)


小智 7

将以下行添加到新脚本将在每次重新运行脚本时清除所有变量:

from IPython import get_ipython
get_ipython().magic('reset -sf') 
Run Code Online (Sandbox Code Playgroud)

为了简化生活,您可以将它们添加到默认模板中.

在Spyder: Tools>Preferences>Editor>Edit template


小智 5

get_ipython().magic()方法在 ipython 8.1 中引发 DeprecationWarning。这是卡尔的答案的新版本

 from IPython import get_ipython
 get_ipython().run_line_magic('reset', '-sf')
Run Code Online (Sandbox Code Playgroud)

将这些行添加到您正在编辑的文件中。然后在 ipython 命令提示符处输入:

%run file_you_are_editing.py
Run Code Online (Sandbox Code Playgroud)