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