【问题标题】:retroactively assign the output of a function to a variable in python追溯地将函数的输出分配给python中的变量
【发布时间】:2016-09-05 01:57:17
【问题描述】:

我运行了一个函数 f(),它只用了 10 多个小时就完成了。不幸的是,我犯了一个错误,没有分配它的输出,即 foo = f()。

我还更改了下划线“_”变量的值。

我想知道,f() 的结果还在内存中吗?有什么方法可以访问它们吗?

【问题讨论】:

  • this answer。这仅在您使用交互式 shell(例如 iPython)时才有效
  • 这是一个很好的答案,谢谢,但不幸的是它在我使用的交互式 shell 上不可用:-(
  • @emac:那么您使用的是常规的 Python 交互式 shell,而不是 IPython(这是该答案适用的)。

标签: python function variable-assignment


【解决方案1】:

我假设您在 Python 交互式解释器中,并且您实际上并没有使用 _ 来回应它的价值!如果你这样做了,那么你的函数调用的输出就会丢失。

如果您没有回显其他任何内容,但之前绑定了_,那么这是一个新的全局阴影,用于捕获您的函数输出的内置交互式解释器。

使用del _ 删除它并显示内置的,它仍然会保存您的函数输出:

>>> del _
>>> output = _

这是可行的,因为内置的 _ 名称始终绑定到最后一个表达式结果,而不管是否存在全局 _

>>> _ = 'foo'
>>> 1 + 1  # an expensive operation!
2
>>> del _
>>> _
2

如果您使用的是 IPython,那么您可以通过输出编号访问所有结果;如果一个结果前面回显了Out[42],则使用_42访问缓存的结果。

【讨论】:

  • 不幸的是,我重复了运行程序所花费的时间!结果好像没了!你生活和学习......
  • @emac:很遗憾听到这个消息!也许您无论如何都想切换到 IPython,如果您在 Python 中进行大量数据处理或探索,那么交互式 shell 有很多强大的功能可以帮助您。比如缓存最近的结果。
猜你喜欢
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
相关资源
最近更新 更多