这是一个有点奇怪的问题。它是在一个公开 Python API 的工具的上下文中出现的,我们花了很多时间从 REPL 交互式查询。导致问题的特定成语是这样的:
for var in slow_generator_of_giant_list():
stats = update(stats, var)
print stats
要在 REPL 中输入,我可以输入:
>>> for var in slow_generator_of_giant_list():
... stats = update(stats, var)
...
如果我现在尝试键入print
,由于缩进不当,我会收到语法错误。(否则我将打印放在循环中并在每次迭代时执行。)
但是如果我按回车键进入下一行,循环会立即运行,我必须等待它完成,或者在可能出现的输出面前输入打印命令,等等。
显然我可以定义一个包含上述内容的函数,无论如何它可能值得保存到一个文件中,但在一般情况下,我们正在动态构建这些,如果有一种方法来“调度”一个命令会很好在 REPL 的循环结束后运行。在带有块分隔符的语言中,我当然可以将它放在结束分隔符(以及任何必要的语句分隔符)之后。但是我和我的同事都很难在这里做类似的事情。
是否存在对 Pythonic 语法的丑陋滥用,会达到我和我的同事想不到的伎俩?或者推荐一种避免问题的方法,同时仍然可以轻松地将临时交互式查询组合在一起?
感谢您的任何指示。