如何保存/复制课程&我在python解释器中编写的函数?

时间:2010-11-04 01:10:50

标签: python

如何将您在python交互式会话中编写的函数/类保存到文件中?具体来说,pydev / eclipse的交互式会话(在mac上)有没有办法做到这一点?

我刚开始学习python - 我很高兴使用解释器的交互式会话来测试和玩我编写的模块。但是,我发现自己在解释器中编写函数,我认为,将它保存到我的脚本文件中会很酷。我该怎么做?

我试过了:

import pickle
pickle.dump(my_function, open("output.p", "w"))

但它似乎更像是二进制序列化,或者至少我没有任何东西可以复制并粘贴到我的代码中......

有没有办法看到课程背后的代码&我在解释器中定义的函数?然后将它们从解释器中复制出来?

更新

好的,这是我到目前为止所学到的:

  • 我错过了最简单的一切 - 在Eclipse中PyDev的交互式会话允许您右键单击并保存会话。仍然需要删除>>>,但要完成工作。
  • IPython显然是要做到这一点的方法。
  • How to save a Python interactive session?有更多详情。

4 个答案:

答案 0 :(得分:5)

在我看来,交互式编码会话的最佳环境必须是IPython。它基于并扩展了基本的Python解释器,具有很多魔力,包括历史。例如,您可以发出命令%logstart以将所有后续输入转储到文件中,该文件在成为脚本之前仍然需要进行编辑,但是您可以使用很多工具。

安装IPython时,请不要忘记pyreadline

但是,一般情况下,最好在IDE中编写代码然后运行它。 IPython也有帮助。如果您编写并保存脚本,然后使用IPython“run”命令运行它,脚本的整个全局命名空间将可用于您的IPython会话中的检查。此外,您可以使用-d参数运行以立即在任何未处理的异常上触发pdb调试器。

如果你更像是一个直接的IDE和调试器类型的人,那么最简单,最好的轻量级环境必须是PyScripter

答案 1 :(得分:2)

我认为答案是改变你的工作流程。

我所做的是在编辑器(emacs)中编写我的函数,然后按下组合键(Ctrl-c Ctrl-e)将文本区域发送到(i)python解释器。

这样我可以保存我想要的功能,也可以在翻译中使用它。

Emacs是我如何做到的核心,但我确信必须有许多编辑器(vim,gedit等)和IDE的类似方法。

PS。在使用Python时,找到一个好的编辑器是至关重要的。编辑器必须能够轻松地向左右移动代码块,否则空白问题变得过于繁重。

我不喜欢在python解释器中输入代码块,因为它不允许我轻松地移动块。当你找到合适的编辑器时,你会更喜欢Python。

答案 2 :(得分:2)

您可以设置一个python历史文件,将您输入的所有内容存储到解释器中。

以下是:

http://docs.python.org/tutorial/interactive.html

答案 3 :(得分:0)

我认为无法做到。

Python可以使用inspect模块执行instrospection,但如果没有源文件,inspect.getsource函数将无法工作。