在没有调试模式的情况下在功能范围内交互式使用 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 也包含一个交互式控制台。
这是我想要的:
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 也包含一个交互式控制台。