3

我不确定我是否正确地用了这个主题,但基本上我很好奇是否有人可以在 Python IDLE 或类似工具中开发代码,然后通过一些命令吐出内存中的当前代码。我相信我以前在阅读 Lisp 书籍时这样做过,并记得它是一种与通常重新运行静态文件非常不同的方法。关于如何执行此操作或类似操作的任何建议?谢谢

更新我最终结合了使用 execfile 和重新加载命令的 IDLE,同时在单独的编辑器(eclipse/pydev)中编辑代码。我更改了我的“主”文件,以便在调用 execfile 时不会立即执行任何操作。主文件中的代码和导入的模块被加载到当前范围/堆栈中,因此当我编写新代码或发生错误时,我可以直接在 IDLE 命令行中进行测试。一旦我发现问题或前进的方向,我就会在编辑器中更新代码,运行 reload(module) 更新模块,然后在主文件上运行 execfile(path)。

4

1 回答 1

5

这对 LISP 来说是明智的原因是每个 LISP 程序只是一堆宏和函数,并且 s 表达式可以自动格式化为一个很好的表示形式。

在 Python 中情况并非如此,您有更复杂的语法(重要的空格、装饰器、许多控制结构、不同类型的字符串文字,...)和更多的语义元素(类、函数、顶级代码、 ...),所以这种方法在这里不会很好地工作。即使是最小的项目,生成的代码也会变得非常混乱,并且生成的代码仍然需要大量的“后处理”,这在某种程度上抵消了开发速度的优势。

相反,您可以在一个好的文本编辑器中编写代码,然后

  • 使用内置功能将其与 REPL 集成(EMACS 和 Vim 对这类东西有很好的支持)或
  • 使用 将其加载到 REPL 中execfile,这将为您提供良好的文本编辑和提示的交互性。
  • 连同程序一起,编写一套单元测试。建议将这用于任何重要的软件,并自动测试您的代码,因此您将不得不在交互式提示中花费更少的时间,手动检查功能是否正常工作。

您还可以获取一个功能更全面的 IDE,它支持代码评估和全面调试(PyDev 是这里的一个示例,感谢 sr2222)。

于 2012-04-05T15:27:16.213 回答