当前位置: 首页 > 面试题库 >

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

麻学博
2023-03-14
问题内容

我正在寻找与Matlab中的“清除”类似的东西:一种命令/函数,该命令/函数从工作区中删除所有变量,并将其从系统内存中释放出来。Python中有这样的事情吗?

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


问题答案:

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

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

我怀疑您是否确实想这样做,因为“每个名称”都包含所有内置函数,因此在完全清除之后您无能为力。记住,在Python中,实际上没有“变量”之类的东西-
有很多种类的 对象 (包括模块,函数,类,数字,字符串等),而有 名称
绑定到对象;该序列的作用是从模块中删除每个名称(当且仅当对它们的每个引用都已被删除时,相应的对象才会消失)。

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

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

此序列仅保留私人名称或魔术__builtins__名称,包括包含所有内置名称的特殊名称。因此,内置程序仍然有效-例如:

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

如您所见,名称n(该变量中的控制变量for)也会碰巧缠住(因为它for每次都会在子句中重新绑定),因此最好为该控制变量命名_(例如,清楚地显示“它是特殊”(此外,在交互式解释器中,_在提示符处输入的每个完整表达式后,名称都会重新绑定到该表达式的值,因此不会持续很长时间;-)。

无论如何,一旦你已经确定到底是什么 你想做的事,这不是很难定义的功能为目的,并把它放在你的启动文件(如果你只在互动环节希望它)或网站-
自定义文件(如果您想在每个脚本中使用它)。



 类似资料:
  • 问题内容: 有时,我会在同一ipython会话中重新运行脚本,但是如果未清除变量,我会感到很惊讶。如何清除所有变量?每次我调用魔术命令%run时是否有可能强制执行此操作? 谢谢 问题答案: 似乎清除定义的变量。

  • 我尝试了各种步骤从Android Studio中移除断点。其中之一列在问题断点链接中 我遵循了这个,但是,仍然有一些绿色的红色的圈剩余,是什么是看到的那些在下面的图像和如何有效地去除那些。

  • 问题内容: 我有一个bash脚本a.sh,其中有一个python脚本b.py。python脚本计算某些内容,我希望它返回一个值,该值稍后将在a.sh中使用。我知道我能做 在a.sh中: 在b.py中: 但这不是那么方便,因为我还在b.py中打印了其他消息 有什么更好的方法吗? 编辑: 我现在正在做的只是 这意味着我可以在b.py中打印很多东西,但是只有最后一行(假设它不包含“ \ n”,这是最后一

  • 问题内容: 我是Python和一般编程的新手(最多几个星期)。 关于Python和使用模块,我意识到可以使用导入函数。 所以不用打字 我可以说 我发现这大大简化了工作。现在,说我想在模块之间使用一堆 变量 ,并将它们全部定义在一个python模块中。如何使用上述类似方法或同样简单的方法导入这些变量。我不想使用,然后要求在所有变量前面加上。 理想的情况是以下情况: py b.py 输出: 问题答案:

  • 问题内容: 我敢肯定这很简单,但是我一直无法使其正常工作。我需要让我的主要python脚本调用另一个python脚本,并将变量从原始脚本传递到我已调用的脚本 举一个简单的例子,我的第一个脚本是 我的第二个脚本是 我希望它可以打印x但我得到 我不确定导入是否是实现此目标的正确方法,但是如果有人可以通过简单的方式对此有所了解,那就太好了! 谢谢, 编辑 阅读评论后,我想我会扩展我的问题。Aswin M

  • 我们设置了几个ActiveMQ Artemis 2.17.0集群,以便在数据中心之间使用镜像进行复制。 在ActiveMQ Artemis 2.17.0或更高版本中有什么方法可以实现这一点吗?