python - 如何在 ipython 会话中从内存中恢复变量值?
问题描述
一旦python变量被覆盖,你将如何从内存中恢复它?
也许这会让事情变得容易一些。我目前正在一个 ipython 会话中,例如:
In [1]: var = method_that_cant_be_reproduced()
In [2]: var = [4, 5, 6]
是否有可能以某种方式恢复var
在步骤 1 中分配的值?我假设它没有被垃圾收集。
我也知道有关先前值的一些细节。这是一个清单,我知道它的大小。
解决方案
当您使用var = [4, 5, 6]
该名称时,该名称var
被重新绑定到一个新对象(列表)并且原始对象丢失了(因为不再有任何名称引用它)。因为没有任何东西可以引用您的原始对象,所以您的问题的答案几乎肯定是no。
虽然这可能不是您想要的答案,但可以从中学到几件事:
- 如果一个函数只能运行一次/变量只能生成一次,不要覆盖它,在另一个变量或文件中跟踪它
- 尽量不要出现一个变量只能生成一次的情况(如果你的生成过程有问题并且源丢失了怎么办?),在使用之前复制你的源
- 预料到意外,如果您的计算机崩溃并且您的 IPython 会话丢失了怎么办?您是否将结果存储在任何地方?
所以你犯了一个错误,你仍然可以从中吸取教训并继续前进,因为你知道你不会再犯同样的错误了。
推荐阅读
- django - Django 'ModelBase' 对象不可迭代 TypeError
- javascript - 如何在 Ionic 5 中实现振铃(来电)通知
- r - 如何在ggplot2中拆分图例
- angular - IE11 中的 Angular FormData forEach 和 getAll 错误方法
- node.js - 如何使用 Mongo 查询获取过滤嵌套文档的文档?
- acumatica - Acumatica 上可公开访问的屏幕
- python - Python Tkinter 循环问题
- windows - PostgreSQL: 'more' 不是内部或外部命令、可运行程序或批处理文件
- python - TypeError:“系列”对象在对 Dask 与 Pandas 进行基准测试时不支持项目分配
- java - 在 Spring Data R2DBC 上初始化数据库以进行测试