将函数的输出追溯分配给 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
访问缓存结果。
我有一个 运行 函数 f(),它只用了 10 个多小时就完成了。不幸的是,我犯了一个错误,没有分配它的输出,即 foo = f().
我还更改了下划线“_”变量的值。
我想知道,f()的结果还在内存中吗?有什么方法可以访问它们吗?
我假设您在 Python 交互式解释器中,并且您实际上没有使用 _
来回显它的值!如果你这样做了,那么你的函数调用的输出就会丢失。
如果您没有回显任何其他内容,但之前绑定了 _
,那么这是一个新的全局阴影内置的交互式解释器,它捕获了您的函数输出。
使用 del _
删除它并显示内置函数,它仍然会保留您的函数输出:
>>> del _
>>> output = _
这是有效的,因为内置的 _
名称总是绑定到最后一个表达式结果,无论是否存在全局 _
:
>>> _ = 'foo'
>>> 1 + 1 # an expensive operation!
2
>>> del _
>>> _
2
如果您使用IPython,那么您可以通过输出编号访问所有结果;如果结果前面带有 Out[42]
回显,则使用 _42
访问缓存结果。