14. 交互式输入编辑和历史替换

某些版本的 Python 解释器支持当前输入行的编辑和历史替换,类似于 Korn shell 和 GNU Bash shell 中的功能。这是使用 GNU Readline 库实现的,该库支持各种编辑风格。该库有自己的文档,我们在此不再赘述。

14.1. Tab 补全和历史编辑

变量和模块名称的补全在解释器启动时自动启用,以便 Tab 键调用补全函数;它会查看 Python 语句名称、当前局部变量和可用的模块名称。对于像 string.a 这样的带点表达式,它会评估表达式直到最后的 '.',然后根据结果对象的属性建议补全。请注意,如果表达式中包含一个带有 __getattr__() 方法的对象,这可能会执行应用程序定义的代码。默认配置还会将您的历史记录保存到用户目录中名为 .python_history 的文件中。在下一次交互式解释器会话期间,历史记录将再次可用。

14.2. 交互式解释器的替代方案

与早期版本的解释器相比,此功能是一个巨大的进步;然而,仍然有一些期望:如果能在续行上建议正确的缩进(解析器知道接下来是否需要一个 INDENT 标记)那就太好了。补全机制可以使用解释器的符号表。一个检查(甚至建议)匹配括号、引号等的命令也很有用。

一个已经存在了相当长时间的增强型交互式解释器是 IPython,它具有 Tab 补全、对象探索和高级历史管理功能。它还可以彻底定制并嵌入到其他应用程序中。另一个类似的增强型交互式环境是 bpython