如何清除ipython中的变量?


146

有时,我会在同一ipython会话中重新运行脚本,但在未清除变量的情况下,我会感到很惊讶。如何清除所有变量?每次我调用魔术命令%run时是否有可能强制执行此操作?

谢谢

Answers:


206

%reset 似乎清除定义的变量。


2
谢谢。有什么方法可以在每个%run之前自动设置它?

2
您可以将脚本转换为函数,以保持全局名称空间整洁。
罗伯·波拉克

35
刚刚发现%reset -f无需用户确认即可清除全局名称空间
WillJones

1
是的,reset -f非常好,不需要再次手动确认:)
user3723247 '18

1
@Victor %用于ipython魔术命令,这里是%reset ipython.readthedocs.io/en/stable/interactive/…–
aisbaa

56

@ErdemKAYA评论后编辑。

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

%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/获得regex教程。

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

%reset?

9
否则,也可以使用python中的“ del a”。
SeF

1
不会,此命令将被name_variable视为正则表达式语句,并将删除与其匹配的任何内容。
埃德姆·卡亚

@ErdemKAYA谢谢,我之前从未注意到它!答案已编辑。
SeF

1
一点也不!:)确实有点违反直觉。
埃德姆·卡亚

37

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

del x

13

我试过了

%reset -f

并清除所有变量和内容而无提示。-f在不提示yes / no的情况下对给定命令执行强制操作。

希望这会有所帮助.. :)


9

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

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

为了使生活更轻松,您可以将它们添加到默认模板中。

在Spyder中: Tools>Preferences>Editor>Edit template


我喜欢它,因为它也可以从脚本中运行。
Zargo '19


0

控制台面板中的退出选项还将清除变量资源管理器中的所有变量

***请注意,您将失去在控制台面板中运行的所有代码

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.