gpt4 book ai didi

python - 如何清除Python脚本中间的所有变量?

转载 作者:太空宇宙 更新时间:2023-11-03 21:43:03 25 4
gpt4 key购买 nike

我正在Matlab中寻找类似于“clear”的东西:一个命令/函数,它从工作区中删除所有变量,从系统内存中释放它们。 Python中有这样的东西吗?

编辑:我想编写一个脚本,在某个时候清除所有变量。

最佳答案

以下命令序列确实会从当前模块中删除每个名称:

>>> import sys
>>> sys.modules[__name__].__dict__.clear()

我怀疑你真的想这样做,因为“每个名称”都包含所有内置函数,所以在彻底清除之后你无能为力。请记住,在 Python 中实际上不存在“变量”这样的东西——有多种类型的对象(包括模块、函数、类、数字、字符串……),并且有是绑定(bind)到对象的名称;该序列的作用是从模块中删除每个名称(当且仅当对它们的每个引用都刚刚被删除时,相应的对象才会消失)。

也许您想要更有选择性,但除非您想更具体,否则很难准确猜测您的意思。但是,仅举一个例子:

>>> import sys
>>> this = sys.modules[__name__]
>>> for n in dir():
... if n[0]!='_': delattr(this, n)
...
>>>

此序列保留了私有(private)或神奇的名称,包括包含所有内置名称的 __builtins__ 特殊名称。因此,内置函数仍然有效——例如:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'n']
>>>

如您所见,名称 n (for 中的控制变量)也恰好保留下来(因为它在 for 中重新绑定(bind)) code> 子句每次通过),因此最好将该控制变量命名为 _,例如,以清楚地显示“它很特殊”(另外,在交互式解释器中,命名为 _在提示符下输入每个完整表达式后, 无论如何都会重新绑定(bind)到该表达式的值,因此它不会停留太久;-)。

无论如何,一旦您准确地确定了您想要执行的操作,那么为此目的定义一个函数并将其放入您的启动文件中(如果您只需要它)就不难了在交互式 session 中)或站点自定义文件(如果您希望在每个脚本中使用它)。

关于python - 如何清除Python脚本中间的所有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52701739/

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