首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >with语句中的Python交互式REPL

with语句中的Python交互式REPL
EN

Stack Overflow用户
提问于 2016-04-08 22:19:25
回答 2查看 649关注 0票数 4

从python交互式会话中,是否有一种方法可以在with语句中进入REPL循环?

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

代码语言:javascript
运行
复制
>>>
>>> with app.app_context():
>>> ...   # Normally this is executed as a single block, all at once

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

代码语言:javascript
运行
复制
>>>
>>> with app.app_context():
>>> # do stuff here in a REPL loop
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-08 22:34:27

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

如果有异常,这将不会自动地__exit__,但否则它应该会正常工作(您可能需要自己调用__exit__,我不知道上下文管理器到底是做什么的)。

票数 6
EN

Stack Overflow用户

发布于 2016-04-08 22:32:50

一个功能齐全的REPL,用于非常简单的输入(即没有变量声明),并使用Python2.7中的contextmanager

代码语言:javascript
运行
复制
from contextlib import contextmanager
import sys 
class app(object):
    @contextmanager
    def app_context(self):
       sys.stdout.write(">>> ")
       yield raw_input()

with app().app_context() as output:
   while True:
       print eval(output)
       output = app().app_context().__enter__()

这将需要一些工作来处理任何更复杂的事情-- eval是一个眼线,除了^C之外没有什么好的方法来打破循环--但是它应该能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36510225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档