【发布时间】:2014-08-01 02:25:11
【问题描述】:
我假设这个问题对 pydev 来说是通用的,但我只在 eclipse 中使用过 pydev 所以我不确定......
过去,我不小心这样做了,我想学习如何定期这样做:
- 我在 eclipse pydev 中运行断点调试器
- 我停在一行代码上,意识到我需要改变一些东西
- 我对代码进行了更改
- 我保存了代码
- 调试器在我上次更改之前跳转,以便我可以继续调试会话并使用新更改:
- 就好像旧代码从未发生过一样
我不确定这是如何工作的,但我想确切了解如何触发它,因为在我调试时它不再发生。
【问题讨论】:
-
顺便说一句,python 代码不是编译而是解释。
-
@JakobBowyer 废话,CPython 有
.pyc文件,标准库中有compile()。它有时会输出字节码,然后被解释(但并非总是如此!参见 Nuitka、PyPy 的 JIT、Cython 和其他小众实现),但这是一个实现细节。 -
@delnan 但你(在很大程度上)可以执行任何 python 代码,而无需将其“编译”为字节码,使其成为一种纯粹的解释语言
-
没有语言被编译或解释。 CPython 的解释器组件是一个字节码解释器,它也接受源代码并将其透明地编译为字节码。但这并不意味着编译的概念是没有意义的(正如你所暗示的那样)——例如,在内存中动态生成 Python 代码时,注意
compile()步骤非常重要。它还会影响可用的自省功能(函数只有__code__属性,它们不携带源代码)。但是,是的,OP 实际上关心的是动态替换代码。
标签: python debugging pydev on-the-fly