14. 交互式输入编辑和历史替换¶
某些版本的 Python 解释器支持当前输入行的编辑和历史替换,类似于 Korn shell 和 GNU Bash shell 中的功能。这是使用 GNU Readline 库实现的,该库支持各种编辑风格。该库有自己的文档,我们在这里不再重复。
14.1. 选项卡补全和历史编辑¶
变量和模块名称的补全在解释器启动时 自动启用,以便 Tab 键调用补全函数;它会查看 Python 语句名称、当前局部变量和可用的模块名称。对于带点的表达式,例如 string.a
,它会评估表达式直到最后一个 '.'
,然后从结果对象的属性中建议补全。请注意,如果表达式中包含具有 __getattr__()
方法的对象,这可能会执行应用程序定义的代码。默认配置还会将您的历史记录保存到用户目录中的名为 .python_history
的文件中。在下次交互式解释器会话期间,历史记录将再次可用。
14.2. 交互式解释器的替代方案¶
与早期版本的解释器相比,此功能是一个巨大的进步;但是,还有一些愿望:如果在续行上建议适当的缩进,那就太好了(解析器知道接下来是否需要缩进标记)。补全机制可能会使用解释器的符号表。检查(甚至建议)匹配的括号、引号等的命令也很有用。
一个存在已久的增强型交互式解释器替代方案是 IPython,它具有选项卡补全、对象探索和高级历史管理功能。它还可以彻底自定义并嵌入到其他应用程序中。另一个类似的增强型交互式环境是 bpython。