geekdoc-python-zh/docs/pythoncentral/review-of-bpython-and-dream...

7.9 KiB
Raw Permalink Blame History

回顾 bpython 和 DreamPie(替代 Python Shells)

原文:https://www.pythoncentral.io/review-of-bpython-and-dreampie-alternative-python-shells/

bpython 替代 Shell 评论

bpython 是一个比我们上次讨论的 IPython 更轻便的解决方案。IPython 扩展了 Python 本身的功能,并附带提供了交互特性,而 bpython 扩展了 Python shell 的交互特性——仅此而已。然而,在其预期目的的范围内,它是相当好的。它可以在 Windows、Linux 和 OS X 上运行。尽管在 Windows 上安装是一件非常痛苦的事情。

像 IPython 一样bpython 提供了两个接口,一个使用 curses 的命令行接口和一个使用 GTK 的接口。对这两个版本的测试表明GTK 界面受到的关注要少得多,命令行界面在测试版本(0.9.7.1)中更受欢迎。一些细节:在一行的末尾按下 Home 键会将光标放在提示的前面而不是后面,尽管当你输入时,它会正确地替换光标;使用深色 GTK 主题,代码完成菜单完全是黑色的;菜单功能没有快捷键。

bpython 代码完成和语法突出显示

bpython 的代码完成比 IPython 的 CLI 界面要好一些;它不是简单地显示一个列表供你输入,而是给你一个列表,你可以使用 Tab 和 Shift-Tab 滚动浏览。它还能优雅地处理极长建议列表的情况尽管人们可能希望使用箭头键和上下翻页导航。GTK 界面也不方便——所有的条目都显示在一个列表中,一次只能显示大约 10 个条目,可以使用箭头键或 Tab 和 Shift-Tab 来导航;以这种方式浏览长长的列表是很困难的,因为你看不到足够远的未来来快速前进。简单有效地提供函数签名帮助。

bpython 在您键入时以及在源代码清单中突出显示语法。它使用 Pygments 干净、快速、有效地完成这项工作。使用的颜色可以通过创建一个主题文件来定制,非常简单;下载中有一个很好的例子 tarball

python 帮助

bpython 中的帮助相当少—您可以使用基本 python 交互模式提供的help函数,并且可以显示当前函数的源代码。

help函数的工作方式与默认的 Python 解释器完全一样,可以说相当不错。它使用一个分页器来显示请求帮助的项目的定义和 docstring并且在结果中不突出显示语法。

显示函数或类定义的源代码在它工作时是有效的,尽管它似乎很难找到交互定义的函数的源代码。但是,它很好地展示了导入模块的源代码,并在页面中突出显示了它们的语法。

bpython 的其他功能

您可以使用 Ctrl-S 将交互式会话保存到文件中,或者使用 F8 将它发送到pastebin(bpython 开发人员自己的是硬编码的)。两者都工作得很好,尽管它们包含最初发出时产生错误的行;如果有排除它们的选项就好了。

还有一个不太直观的名字叫做 Rewind 函数,它获取到目前为止发出的所有行,弹出最后一行,重新评估剩余的。这对有副作用的代码来说是潜在的危险,尽管我发现它很有用,但它仍然让我毛骨悚然。我想这是基于“勇敢失败”的原则。

bpython 审查摘要

尽管到处都有缺点,尽管它有独特的功能选择,但我发现 bpython 非常有用;事实上,它非常有用,以至于我在所有的机器上都映射了一个快捷键来打开它。如果你像我一样发现 IPython 并不真正符合你的风格,那么试试 bpython 你可能会感到惊喜。

creampie 替代壳牌评论

dream pie——为什么 Python 的所有东西都必须有可笑的名字?—和 bpython 一样,专注于改进 python 的交互使用。它是由 IDLE 的一个贡献者编写的IDLE 是 Python 默认提供的伪 IDE包含了一些来自 IDLE 的代码。

DreamPie 的布局

DreamPie 的布局不像默认的 Python 交互式控制台也不像我们已经讨论过的其他控制台。DreamPie 分为上下两部分,而不是用户输入代码并在交替的行上看到输出:代码在下一部分输入,当提交时,在上一部分进行评估。(对于 Scheme 程序员来说,感觉有点像drrack的界面,除了没有基于文件的文本编辑器部分。)

这种布局的优点是,在下半部分输入的代码在提交之前可以根据需要填充任意多的行;这允许多行编辑,这是其他交互式控制台经常缺乏的,并且消除了对 bpython 古怪的倒带功能的需要。例如,您可以输入完整的函数定义:


def some_func(n):

for i in range(n):

print n * scale

然后,当你意识到忘了第一行的scale参数时,你就不用重新输入整个函数了;你上去把第一行改成def some_func(n, scale)就可以了。完成后,按 Ctrl+Enter 提交整个块。

这确实是 DreamPie 的杀手锏——其他的都是小菜一碟。但它是美味的肉汁。请继续阅读。

DreamPie 语法突出显示和代码完成

哪里有语法DreamPie 就突出它。它做得又快又好,代码窗口中正在进行的突出显示和评估窗口中的静态突出显示是一致的。简而言之,语法高亮是有效的。

这里讨论的所有交互式 Python shells 的代码补全在技术上是完美无缺的:它们都呈现了几乎相同的信息以及完整的关键字、名称、模块名称、属性——一切。然而DreamPie 在用户界面方面表现出色;浏览一长串的完成列表要容易得多,签名帮助也非常出色——在可用的地方,它会在一个可滚动的窗口中显示函数或类的完整源代码。

梦幻女郎的帮助

DreamPie 提供的帮助和 bpython 差不多,也就是说,不多。您可以使用help函数,完整源代码的调用提示和签名帮助很好,但这是它提供的所有 Python 帮助。文档也很少,但是菜单逻辑排列,功能性名副其实,菜单中列出了键盘快捷键;没有更多的文件,虽然一个方便的手册将不胜感激。

creampie 的其他功能

DreamPie 有一个经过深思熟虑的附加功能选择,其中一些非常有用。其中最有效的一个是仅复制代码功能;它允许用户在评估区域选择一个区域,只将代码复制到剪贴板,忽略评估结果。我发现自己经常使用这种方法,但是我希望有一个类似的方法将该区域的代码保存到一个文件中。(我已经提交了一个添加该功能的 pull 请求,但是尚未被接受或拒绝。)

您可以将历史记录保存到保留 DreamPie 界面突出显示和布局的 HTML 文件中,并从保存的 HTML 中导入历史记录。一个选项保存为纯文本也将受到赞赏,但不明显,如果它存在。

DreamPie 提供的另一个特性是多个选项卡,但是由于某种原因,唯一的选项卡区域是代码输入部分。我发现自己希望为每个代码输入标签设置单独的评估面板,但这可能会比它的价值更难实现。无论如何,这个特性在我的试验中并没有被证明是有用的。

创建审核摘要

DreamPie 干净、简单,并且大部分执行良好,仅代码输入和评估的划分就足以证明尝试它是正确的。我发现它很有效,没有错误,而且在所有操作系统上安装都很简单。

我能提供的最后一个建议是:如果您需要 IPython您可能知道这一点并且这是您显而易见的选择。bpython 和 DreamPie 的功能差不多,而且都很可靠,使用起来也很简单;唯一与众不同的特点是 bpython 提供的标准终端体验,而 DreamPie 提供的是分割窗口。如果你知道哪一个最符合你的喜好,就做出相应的选择;否则,两者都试试看。

无论如何,您都将拥有比默认 Python 控制台更好的体验。