在没有调试模式的情况下在功能范围内交互式使用 python 控制台

interactive use of python console inside function scope without debugging mode

这是我想要的:

def f():
    x = 3
    return

运行 在控制台中请求 x 不会给出任何结果,因为 x 在函数范围内。另一种方法是将其中的所有代码复制到一个新脚本中,取消选中它并 运行 它。然后我可以求 x 的值。如果我有一个复杂的函数 f() 或更糟的是 类 中的方法,那么它可能是一个令人沮丧的操作,copy/untabify/interactively 输出和代码 modification/copy back/tabify 正确。

我可以在函数范围内获得交互式控制台的唯一方法是使用 pdb,但我想要一个干净的控制台而不是调试器。

> x
Traceback (most recent call last):

  File "<ipython-input-25-401b30e3b8b5>", line 1, in <module>
    x

NameError: name 'x' is not defined

我用IPython稍微好一点Python控制台:

import IPython

def some_complex_fn():
    x = 42
    IPython.embed()

some_complex_fn()

交互式控制台然后知道 x

我找不到"classic" Python控制台是否有类似的API。

如果您正在编写 Web 应用程序,那么带有 Web 界面的调试器可能会更好 - 例如 Werkzeug debugger 也包含一个交互式控制台。