我正在使用Python Interactive Shell(Windows XP下的ActiveState ActivePython 2.6.4).我创建了一个能够实现我想要的功能.但是,我已经清除了屏幕,因此我无法返回查看功能定义.它也是一个多线函数,因此重新显示行的向上箭头具有最小值.反正有没有返回函数的实际代码?dir()显示" code "和"func_code"属性,但我不知道它们是否包含我需要的内容.
Ale*_*lli 11
不,__code__并且func_code是对已编译的字节码的引用 - 您可以反汇编它们(请参阅参考资料dis.dis),但不能回到Python源代码.
唉,源代码已经消失了,在任何地方都没有记住......:
>>> import inspect
>>> def f():
... print 'ciao'
...
>>> inspect.getsource(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/inspect.py", line 694, in getsource
lines, lnum = getsourcelines(object)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/inspect.py", line 683, in getsourcelines
lines, lnum = findsource(object)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/inspect.py", line 531, in findsource
raise IOError('could not get source code')
IOError: could not get source code
>>>
Run Code Online (Sandbox Code Playgroud)
如果inspect不能达到它,这是一个非常指示性的标志.
如果你在使用GNU的平台上readline(基本上,除了 Windows 之外的任何平台),你可能会利用这样一个事实:readline它本身确实记住了一些"历史"并且可以把它写出来一个文件......:
>>> readline.write_history_file('/tmp/hist.txt')
Run Code Online (Sandbox Code Playgroud)
然后读取该历史文件 - 但是,我知道在Windows中无法做到这一点.
您可能希望使用具有更好内存功能的IDE,而不是"原始"命令解释器,尤其是在Windows等平台上.