当我不期待它时,ipython
可能会保留对对象的引用。
考虑以下脚本(grc.py
):
import sys
obj = []
print sys.getrefcount(obj)
当我在ipython
中运行时:
Python 2.7.1 |EPD 7.0-2 (64-bit)| (r271:86832, Nov 29 2010, 13:51:37)
In [1]: %run grc.py
2
In [2]: print sys.getrefcount(obj)
4
发生了什么事?额外的两个引用来自哪里?
答案 0 :(得分:3)
是的,IPython确实维护了对幕后对象的引用。特别是使用%run会在处理模块的机器中留下引用。
我们正在开发版本中进行处理(希望很快就会变成0.11) - 有关详细信息,请参阅this issue。参考文献仍然存在,但是有一些方法可以摆脱它们(%reset
清除它们,或%xdel obj
一个清除它们。