【问题标题】:Is there a way to clear everything before starting in Mathematica?有没有办法在开始使用 Mathematica 之前清除所有内容?
【发布时间】:2011-11-24 16:42:00
【问题描述】:

在 MATLAB 中有一个函数 clear 可以删除所有当前变量。如果您开始一些全新的东西并且不想与之前的计算发生冲突,这将非常有用。我现在正在为 Mathematica 搜索类似的东西,但除了 Clear[VAR] 之外我找不到任何东西,它只删除了变量 VAR

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    您可以使用ClearAll 清除Global 上下文(默认)中的变量及其属性,如下所示:

    ClearAll["Global`*"]
    

    如果您在不同的上下文中工作(例如,笔记本特定的上下文或单元组特定的上下文),您可以这样做

    ClearAll[Evaluate[Context[] <> "*"]]
    

    如果您想从内核中删除所有符号,以便 Mathematica 不再识别它们,您可以使用类似于上述两个示例的Remove[]

    除此之外,您始终可以使用Quit[] 退出内核,这将删除所有符号。下次您评估某项内容时,将启动一个新内核。

    【讨论】:

      【解决方案2】:

      我推荐以下两种方法之一:

      1。 Quit[] 内核的键盘快捷键

      有一个系统文件KeyEventTranslations.tr,您可以对其进行编辑以自定义键盘快捷键。我和其他人一样,已将 Ctrl+Q 添加到 Quit[] 内核中,以便快速清除所有会话变量。有关设置的更多信息,请参阅:

      2。为新笔记本提供独特的上下文

      在 Mathematica 中,当前的 $Context 定义了 Context 非限定符号名称所属的内容。通过为新笔记本提供独特的上下文,这可以通过Evaluation 菜单轻松完成,该笔记本中使用的符号不会与其他笔记本中的不合格符号发生冲突。有关详细信息,请参阅以下问题:

      【讨论】:

      • 你能在这里总结一下这两种方法吗?简单地链接到现有帖子通常并不好。如果确实被那些人准确回答,那么我们应该将其作为重复项关闭。
      • @yoda 我对正确答案的理解与您的不同。我不希望重复现有的答案,也不是链接到外部资源,而是 StackOverflow 本身。此外,我不认为这是一个重复的问题,不应关闭。如果我链接到具体的答案而不是那些问题会更好吗?如果您觉得我的理解需要更正,请解释原因。
      • +1 - 我也赞成这个答案,因为这是 StackOverflow 喜欢收到的那种答案的一个很好的例子(良好的语法、格式、内容和支持答案的参考)。干得好!
      【解决方案3】:

      我刚刚意识到您可能不知道,与 MATLAB 不同,Mathematica 被设计为作为两个独立的进程运行:前端是用户界面,让您可以使用笔记本。内核进行计算。您可以在不影响前端的情况下退出内核,甚至可以为不同的笔记本启动多个内核,或者在远程计算机上启动一个内核并与本地前端一起使用。


      我相信清理所有内容的唯一可靠方法是Quit 内核并重新启动它(这是自动的)。除了用户变量/函数(包括In/Out、加载的包、系统缓存等)之外,还有太多可以修改的东西。所以如果你需要一个真正的全新开始,我推荐Quit

      对于“软”重置,@yoda 已经提到了ClearAll["Global`*"]。有&lt;&lt; Utilities`CleanSlate` 包,它的自动化程度远不止于此。您可以阅读 AddOns\ExtraPackages\Utilities\CleanSlate.m 文件中的包文档。

      简而言之,CleanSlate[] 将尝试在加载包时将您带回内核状态。 ClearInOut[] 将清除 InOut 以节省内存。

      我已经好几年没用过这个包了(ClearInOut[] 功能除外),因为 Mathematica 内核在现代计算机上启动很快,所以我只使用Quit。所以我无法告诉你它的效果如何。

      【讨论】:

      • 是否有可能通过退出(重新启动)内核,前端本身可能会在自己的小空间中记住某些内容,而这些内容不会通过重新启动内核来删除/清除?每次我想真正确保事情得到清理时,我也会使用这种重新启动内核的方法。但我一直想知道前端是否还记得一些东西。当我想真正确定时,我只需重新启动 Mathematica 本身。
      • @Nasser 据我所知,严格来说前端不会记住任何东西。但是,您可能会打开一个带有动态内容的笔记本,并且一旦看到此内容,它就会导致前端重新启动内核并评估要评估的动态对象中定义的任何内容。令人困惑的部分是,这只发生在动态事物出现时,所以如果你不知道发生了什么,它可能看起来有点“不确定”。我自己不会重新启动前端来进行干净的会话。
      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多