with 语句中的 Python 交互式 REPL

005*_*005 4 python ipython python-3.x

从 python 交互式会话中,有没有办法在 with 语句中输入 REPL 循环?

通常, with 语句作为单个块执行

>>>
>>> with app.app_context():
>>> ...   # Normally this is executed as a single block, all at once
Run Code Online (Sandbox Code Playgroud)

我希望能够在上下文中的交互式会话中运行代码。

>>>
>>> with app.app_context():
>>> # do stuff here in a REPL loop
Run Code Online (Sandbox Code Playgroud)

Blc*_*ght 6

你不能完全模仿一个with语句,但你可以通过app.app_context().__enter__()手动调用来接近。

__exit__如果出现异常,这不会自动执行,但否则它应该工作相同(完成后您可能需要给__exit__自己打电话,我不确定该上下文管理器究竟是做什么的)。