【发布时间】:2014-12-20 02:56:08
【问题描述】:
我这几天一直在寻找这个问题的准确答案,但没有得到任何好的结果。我不是一个完全的编程初学者,但还没有达到中级水平。
当我在 Python 的 shell 中,我输入:dir(),我可以看到当前作用域(主块)中所有对象的所有名称,其中有 6 个:
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
然后,当我声明一个变量时,例如x = 10,它会自动添加到内置模块dir()下的对象列表中,当我再次输入dir()时,它现在显示:
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x']
函数、类等也是如此。
如何删除所有这些新对象而不删除开始时可用的标准 6?
我在这里读过“内存清理”、“控制台清理”,它会清除命令提示符窗口中的所有文本:
>>> import sys
>>> clear = lambda: os.system('cls')
>>> clear()
但这一切都与我想要实现的目标无关,它不会清除所有使用过的对象。
【问题讨论】:
-
为什么你觉得你需要这样做,或者你只是出于好奇?
-
我只是不知道那里有一个
del函数。我开始学习 Python 并且经常需要在 shell 中进行实验,因此标准变量名称(如x或y)通常已经在使用中,并且重新启动 shell 需要另外 15 秒(我有一个非常非常现在的旧笔记本电脑)。所以我想找到一种更快清理 Python 内存的方法。 -
啊。 FWIW,
del不完全是一个函数,因此没有(和)。这是一个引入 del 语句的关键字。当然,它实际上如何删除一个对象可能涉及到函数,但那是另一回事了…… -
在 shell 中试验时,不应使用
x或y等名称,除非您正在使用它们。或者除非你做一些像from _somemodule_ import *这样的傻事,否则你会得到各种各样的垃圾。 :) -
我用谷歌搜索了这个问题,现在我想知道 - 如果我想删除所有变量和函数,为什么不能重新启动内核并从顶部重新运行脚本?
标签: python memory-management dir