gpt4 book ai didi

python - 在 Python 中清除用户创建的变量

转载 作者:行者123 更新时间:2023-11-28 19:04:50 25 4
gpt4 key购买 nike

我是 Python 的绝对初学者。我使用 R 和 Matlab 进行数据分析已经有一段时间了。这些语言(或工具)的一大优点是我可以在 Matlab 中运行 clear all 或在 R 中运行 rm(list=ls()) 来清除变量我创建。然后我可以继续试验我的代码片段。

我正在努力在 Python 中找到这样的解决方案。我研究了Is there a way to delete created variables, functions, etc from the memory of the interpreter?发现有两种方法可以完成我想做的事情,但实际上它们并不接近。

第一种方法:

%Reset

此命令删除 PyCharm 中的所有变量和导入设置以运行交互模式。也就是说,运行上面的命令后,我必须重新运行

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

这很烦人。

第二种方法:

另一个建议的方法是编写一个for 循环并忽略以__ 开头的函数。由于上述原因,这也不起作用。例如,当我启动 PyCharm 时,我运行

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

确保我能够像在 Matlab 和 R 中一样同时运行一堆命令(在 PyCharm 中,键盘快捷键是 [Alt + Shift + E;这在控制台中称为执行选择]) .我注意到那个 Stackoverflow 线程中提到的 for 循环删除了一些通过运行上面两行代码创建的变量。这意味着我将无法通过一次选择它们来执行语句。我将不得不在提示符下单独键入它们,这很烦人。另一种选择是每次执行 for 循环时都运行以上两行代码,这也很烦人。

顺便说一句,我做了一些研究以了解运行以上两行代码后会发生什么。在运行以上两行之后,我运行了 dir() 以获取我的 session 中存在的所有变量的列表。

列表看起来像这样

Out[4]: 
['In',
'InteractiveShell',
'Out',
'_',
'_2',
'__',
'___',
......(continued)
'sys']

有什么办法,我可以在不删除上述变量的情况下删除用户创建的变量?实际上,我想复制 rm(list=ls()) 在 R 中为我做的事情。

我看到有很多人在 StackOverflow 之外问过这个问题,例如 https://github.com/spyder-ide/spyder/issues/2563 .

感谢您的帮助。我将 PyCharm 与最新的 Conda 发行版 (3.6) 一起使用。

最佳答案

试试这个:

>>> x = 1
>>> x
1
>>> globals().clear()
>>> x
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
x
NameError: name 'x' is not defined

请注意 the docs实际上不要说您可以安全地修改 globals() 返回的字典,也不要说修改这个字典会产生您想要的效果(或任何效果)。但是,如果您只是为了在 REPL 中方便而这样做,那么如果它有效,它就有效。

关于python - 在 Python 中清除用户创建的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com