将函数的输出追溯分配给 python 中的变量

retroactively assign the output of a function to a variable in python

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

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

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

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

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

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

>>> del _
>>> output = _

这是有效的,因为内置的 _ 名称总是绑定到最后一个表达式结果,无论是否存在全局 _:

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

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